Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling


Publicatiedatum:
01-05-2026

Inwerkingtreding:
01-05-2026

7.1 Wat is het aantal ingezette uren zorgverleners in loondienst per cliënt?

Concepten

Relaties

Eigenschappen

Instanties

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: Zorgkantoren 7.1
2# Parameters: ?jaar, ?kwartaal, ?zorgkantoor
3# Ontologie: versie 3.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 AS ?Indeling)
14    (?ingezette_uren AS ?Aantal_ingezette_uren)
15    (?aantal_clienten AS ?Aantal_cliënten)
16    (IF(?aantal_clienten = 0, "Ongedefineerd", ?ingezette_uren/?aantal_clienten) AS ?Ingezette_uren_per_cliënt)
17WHERE 
18{
19    {
20        SELECT 
21            ?vestiging
22            (SUM(?gewerkte_uren) AS ?ingezette_uren)
23        WHERE
24        {
25            #   BIND(2023 AS ?jaar)
26            #   BIND("Q3" AS ?kwartaal)
27            #   BIND(onz-org:ZorgkantoorMenzis AS ?zorgkantoor)
28            BIND(IF(?kwartaal = 'Q1', xsd:date(CONCAT(STR(?jaar), '-01-01')),
29                IF(?kwartaal = 'Q2', xsd:date(CONCAT(STR(?jaar), '-04-01')),
30                IF(?kwartaal = 'Q3', xsd:date(CONCAT(STR(?jaar), '-07-01')),
31                IF(?kwartaal = 'Q4', xsd:date(CONCAT(STR(?jaar), '-10-01')),
32                '')))) AS ?start_periode)
33            BIND(?start_periode + "P3M"^^xsd:duration + "-P1D"^^xsd:duration AS ?eind_periode)
34            
35            ?overeenkomst 
36                a onz-pers:ArbeidsOvereenkomst ;
37                onz-pers:heeftOpdrachtnemer ?persoon ;
38                onz-g:hasPart ?overeenkomst_afspraak .
39            ?overeenkomst_afspraak
40                a onz-pers:WerkOvereenkomstAfspraak ;
41                onz-g:startDatum ?start_afspraak .
42            OPTIONAL { ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak }
43            FILTER(?start_afspraak <= ?eind_periode && ((?eind_afspraak >= ?start_periode) || (!BOUND(?eind_afspraak))))
44
45            ?overeenkomst_afspraak onz-g:isAbout ?functie .                
46            ?functie a onz-pers:ZorgverlenerFunctie .
47            OPTIONAL {
48                ?overeenkomst_afspraak onz-g:isAbout ?locatie_afspraak .
49                ?locatie_afspraak a onz-g:StationaryArtifact .
50            }
51
52            ?inzet
53                a onz-pers:GewerktePeriode ;
54                onz-g:definedBy ?overeenkomst ;
55                onz-g:hasBeginTimeStamp ?start_inzet_datetime ;
56                onz-g:hasQuality/onz-g:hasQualityValue/onz-g:hasDataValue ?gewerkte_uren .
57            OPTIONAL{ ?inzet onz-g:hasPerdurantLocation ?locatie_werk }
58            BIND(STRDT(SUBSTR(STR(?start_inzet_datetime), 1, 10), xsd:date) AS ?start_inzet)
59            FILTER(?start_inzet >= ?start_periode && ?start_inzet <= ?eind_periode)
60            FILTER(?start_inzet >= ?start_afspraak && (?start_inzet <= ?eind_afspraak || !BOUND(?eind_afspraak)))
61
62            BIND(IF(!BOUND(?locatie_werk), ?locatie_afspraak, ?locatie_werk) AS ?locatie)
63            
64            {     
65                # COALESCE i.p.v. FILTER(BOUND): voorkomt dat Fuseki partOf* evalueert met ongebonden ?locatie
66                BIND(COALESCE(?locatie, <urn:sparql:guard:no-locatie>) AS ?locatie_safe)
67                ?locatie_safe onz-g:partOf* ?vestiging_uri .
68                ?vestiging_uri a onz-org:Vestiging ;
69                    onz-g:hasLocalizableArea/onz-g:identifiedBy/onz-g:hasPart/onz-g:hasPart ?postcode_6 .
70                BIND(IRI(SUBSTR(STR(?postcode_6), 1, STRLEN(STR(?postcode_6)) - 2)) AS ?postcode)
71                ?pc_gebied 
72                    onz-g:identifiedBy ?postcode ;
73                    onz-g:partOf+ ?zk_regio .
74                ?zk_regio a onz-org:ZorgkantoorRegio .
75                ?zorgkantoor onz-g:hasOperatingRange ?zk_regio .
76                ?vestiging_uri onz-g:identifiedBy ?vest_nr .    	
77                ?vest_nr a onz-org:Vestigingsnummer ;
78                    onz-g:hasDataValue ?vestiging .
79            } UNION {
80                # Includeer ook de organisatie als geheel en label deze als vestiging
81                BIND("Organisatie (gecontracteerd + algemeen)" AS ?vestiging)
82            }
83
84        }
85        GROUP BY ?vestiging 
86    }
87    {
88        SELECT 
89            ?vestiging
90            (COUNT(DISTINCT(?client)) AS ?aantal_clienten)
91        WHERE
92        {
93            # definieer kwartaal waarin clienten verzorgd werden
94            #   BIND(2023 AS ?jaar)
95            #   BIND("Q3" AS ?kwartaal)
96            #   BIND(onz-org:ZorgkantoorMenzis AS ?zorgkantoor)
97            BIND(IF(?kwartaal = 'Q1', xsd:date(CONCAT(STR(?jaar), '-01-01')),
98                IF(?kwartaal = 'Q2', xsd:date(CONCAT(STR(?jaar), '-04-01')),
99                IF(?kwartaal = 'Q3', xsd:date(CONCAT(STR(?jaar), '-07-01')),
100                IF(?kwartaal = 'Q4', xsd:date(CONCAT(STR(?jaar), '-10-01')),
101                '')))) AS ?start_periode)
102            BIND(?start_periode + "P3M"^^xsd:duration + "-P1D"^^xsd:duration AS ?eind_periode)
103            
104            VALUES ?zorgprofiel { onz-zorg:4VV onz-zorg:5VV onz-zorg:6VV onz-zorg:7VV onz-zorg:8VV onz-zorg:9BVV onz-zorg:10VV }
105            
106            # selecteer zorgproces binnen periode
107            ?zorgproces
108                a onz-zorg:NursingProcess ;
109                onz-g:definedBy ?indicatie ;
110                onz-g:startDatum ?start_proces .
111            OPTIONAL {?zorgproces onz-g:eindDatum ?eind_proces}
112            FILTER (?start_proces <= ?eind_periode && (!BOUND(?eind_proces) || ?eind_proces >= ?start_periode))
113
114            
115            {     
116                ?zorgproces onz-g:hasPerdurantLocation ?locatie .
117                ?locatie onz-g:partOf* ?vestiging_uri .
118                ?vestiging_uri a onz-org:Vestiging ;
119                    onz-g:hasLocalizableArea/onz-g:identifiedBy/onz-g:hasPart/onz-g:hasPart ?postcode_6 .
120                BIND(IRI(SUBSTR(STR(?postcode_6), 1, STRLEN(STR(?postcode_6)) - 2)) AS ?postcode)
121                ?pc_gebied 
122                    onz-g:identifiedBy ?postcode ;
123                    onz-g:partOf+ ?zk_regio .
124                ?zk_regio a onz-org:ZorgkantoorRegio .
125                ?zorgkantoor onz-g:hasOperatingRange ?zk_regio .
126                ?vestiging_uri onz-g:identifiedBy ?vest_nr .    	
127                ?vest_nr a onz-org:Vestigingsnummer ;
128                    onz-g:hasDataValue ?vestiging .
129            } UNION {
130                # Includeer ook de organisatie als geheel en label deze als vestiging
131                BIND("Organisatie (gecontracteerd + algemeen)" 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                onz-g:startDatum ?start_indicatie .
139            OPTIONAL { ?indicatie onz-g:eindDatum ?eind_indicatie }
140            FILTER (?start_indicatie <= ?eind_periode && (!BOUND(?eind_indicatie) || ?eind_indicatie >= ?start_periode))
141            ?client a onz-g:Human .
142        }
143    GROUP BY ?vestiging 
144    }
145}
146