Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling


Publicatiedatum:
03-10-2025

Inwerkingtreding:
03-10-2025

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

Concepten

Relaties

Eigenschappen

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	# ?zorgkantoor_vestiging
15    (?ingezette_uren AS ?Aantal_ingezette_uren)
16    (?aantal_clienten AS ?Aantal_cliënten)
17    (IF(?aantal_clienten = 0, "Ongedefineerd", ?ingezette_uren/?aantal_clienten) AS ?Ingezette_uren_per_cliënt)
18WHERE 
19{
20    {
21        SELECT 
22            ?vestiging
23            ?zorgkantoor_vestiging
24            (SUM(?gewerkte_uren) AS ?ingezette_uren)
25        WHERE
26        {
27            # BIND(2023 AS ?jaar)
28            # BIND("Q3" AS ?kwartaal)
29            # BIND(onz-org:ZorgkantoorMenzis AS ?zorgkantoor)
30            BIND(IF(?kwartaal = 'Q1', xsd:date(CONCAT(STR(?jaar), '-01-01')),
31                IF(?kwartaal = 'Q2', xsd:date(CONCAT(STR(?jaar), '-04-01')),
32                IF(?kwartaal = 'Q3', xsd:date(CONCAT(STR(?jaar), '-07-01')),
33                IF(?kwartaal = 'Q4', xsd:date(CONCAT(STR(?jaar), '-10-01')),
34                '')))) AS ?start_periode)
35            BIND(?start_periode + "P3M"^^xsd:duration + "-P1D"^^xsd:duration AS ?eind_periode)
36            
37            ?overeenkomst 
38                a onz-pers:ArbeidsOvereenkomst ;
39                onz-pers:heeftOpdrachtnemer ?persoon ;
40                onz-g:hasPart ?overeenkomst_afspraak .
41            ?overeenkomst_afspraak
42                a onz-pers:WerkOvereenkomstAfspraak ;
43                onz-g:startDatum ?start_afspraak .
44            OPTIONAL { ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak }
45            FILTER(?start_afspraak <= ?eind_periode && ((?eind_afspraak >= ?start_periode) || (!BOUND(?eind_afspraak))))
46
47            ?overeenkomst_afspraak onz-g:isAbout ?functie .                
48            ?functie a onz-pers:ZorgverlenerFunctie .
49            ?overeenkomst_afspraak onz-g:isAbout ?locatie_afspraak .
50            ?locatie_afspraak a onz-g:StationaryArtifact .
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            ?locatie onz-g:partOf* ?vestiging_uri .
64            ?vestiging_uri a onz-org:Vestiging ;
65                onz-g:hasLocalizableArea/onz-g:identifiedBy/onz-g:hasPart/onz-g:hasPart ?postcode_6 .
66            BIND(IRI(SUBSTR(STR(?postcode_6), 1, STRLEN(STR(?postcode_6)) - 2)) AS ?postcode)
67            ?pc_gebied 
68                onz-g:identifiedBy ?postcode ;
69                onz-g:partOf+ ?zk_regio .
70            ?zk_regio a onz-org:ZorgkantoorRegio .
71            ?zorgkantoor onz-g:hasOperatingRange ?zk_regio .
72            {     
73                ?vestiging_uri 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                ?vestiging_uri onz-org:vestigingVan ?organisatie_uri .
79                BIND("Totaal organisatie" AS ?vestiging)
80                BIND("n.v.t." AS ?zk_vestiging)
81            }
82            BIND(IF(!BOUND(?zk_vestiging), ?zorgkantoor, ?zk_vestiging) AS ?zorgkantoor_vestiging)
83
84        }
85        GROUP BY ?vestiging ?zorgkantoor_vestiging
86    }
87    {
88        SELECT 
89            ?vestiging
90            ?zorgkantoor_vestiging
91            (COUNT(DISTINCT(?client)) AS ?aantal_clienten)
92        WHERE
93        {
94            # definieer kwartaal waarin clienten verzorgd werden
95            # BIND(2023 AS ?jaar)
96            # BIND("Q3" AS ?kwartaal)
97            # BIND(onz-org:ZorgkantoorMenzis AS ?zorgkantoor)
98            BIND(IF(?kwartaal = 'Q1', xsd:date(CONCAT(STR(?jaar), '-01-01')),
99                IF(?kwartaal = 'Q2', xsd:date(CONCAT(STR(?jaar), '-04-01')),
100                IF(?kwartaal = 'Q3', xsd:date(CONCAT(STR(?jaar), '-07-01')),
101                IF(?kwartaal = 'Q4', xsd:date(CONCAT(STR(?jaar), '-10-01')),
102                '')))) AS ?start_periode)
103            BIND(?start_periode + "P3M"^^xsd:duration + "-P1D"^^xsd:duration AS ?eind_periode)
104            
105            VALUES ?zorgprofiel { onz-zorg:4VV onz-zorg:5VV onz-zorg:6VV onz-zorg:7VV onz-zorg:8VV onz-zorg:9BVV onz-zorg:10VV }
106            
107            # selecteer zorgproces binnen periode
108            ?zorgproces
109                a onz-zorg:NursingProcess ;
110                onz-g:definedBy ?indicatie ;
111                onz-g:hasPerdurantLocation ?locatie ;
112                onz-g:startDatum ?start_proces .
113            OPTIONAL {?zorgproces onz-g:eindDatum ?eind_proces}
114            FILTER (?start_proces <= ?eind_periode && (!BOUND(?eind_proces) || ?eind_proces >= ?start_periode))
115
116            # selecteer vestiging van het zorgproces
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            {     
127                ?vestiging_uri onz-g:identifiedBy ?vest_nr .    	
128                ?vest_nr a onz-org:Vestigingsnummer ;
129                    onz-g:hasDataValue ?vestiging .
130            } UNION {
131                # Includeer ook de organisatie als geheel en label deze als vestiging
132                ?vestiging_uri onz-org:vestigingVan ?organisatie_uri .
133                BIND("Totaal organisatie" AS ?vestiging)
134                BIND("n.v.t." AS ?zk_vestiging)
135            }
136            BIND(IF(!BOUND(?zk_vestiging), ?zorgkantoor, ?zk_vestiging) AS ?zorgkantoor_vestiging)
137
138            # selecteer de bijbehordene indicatie, om unieke clienten te kunnen bepalen
139            ?indicatie 
140                onz-g:hasPart ?zorgprofiel ;
141                onz-g:isAbout ?client .
142            ?client a onz-g:Human .
143        }
144    GROUP BY ?vestiging ?zorgkantoor_vestiging
145    }
146}
147