Uitwisselprofiel IGJ Contextinformatie t.b.v. aangekondigd inspectiebezoek

Over Uitwisselprofiel IGJ Contextinformatie t.b.v. aangekondigd inspectiebezoek

1.0.0-RC1-acc


Publicatiedatum:
18-09-2025

Inwerkingtreding:
18-09-2025

1.4.1. Wat is het aantal ingeplande personeelsleden met een zorgverlener functie per dienst?

Concepten

Relaties

Eigenschappen

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: IGJ 1.4.1
2# Parameters: ?peildatum, ?vestigingsnummer
3# Ontologie: versie 3.0.0 of nieuwer
4
5
6PREFIX onz-g: <http://purl.org/ozo/onz-g#>
7PREFIX onz-plan: <http://purl.org/ozo/onz-plan#>
8PREFIX onz-pers: <http://purl.org/ozo/onz-pers#>
9PREFIX onz-zorg: <http://purl.org/ozo/onz-zorg#>
10PREFIX onz-org: <http://purl.org/ozo/onz-org#>
11PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
12PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
13PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
14
15SELECT
16    ?kwalificatieniveau
17    (SUM(COALESCE(?dag_dienst * ?pil, 0)) AS ?Aantal_ZV_PIL_dag)
18    (SUM(COALESCE(?avond_dienst * ?pil, 0)) AS ?Aantal_ZV_PIL_avond)
19    (SUM(COALESCE(?nacht_dienst * ?pil, 0)) AS ?Aantal_ZV_PIL_nacht)
20    (SUM(COALESCE(?dag_dienst * ?pnil, 0)) AS ?Aantal_ZV_PNIL_dag)
21    (SUM(COALESCE(?avond_dienst * ?pnil, 0)) AS ?Aantal_ZV_PNIL_avond)
22    (SUM(COALESCE(?nacht_dienst * ?pnil, 0)) AS ?Aantal_ZV_PNIL_nacht)
23{
24    {
25        SELECT DISTINCT ?kwalificatieniveau {
26            {
27                ?functie
28                    a onz-pers:ZorgverlenerFunctie ;
29                    onz-g:hasQuality /onz-g:hasQualityValue ?functie_niveau .
30                ?functie_niveau
31                    a onz-pers:ODBKwalificatieWaarde ;
32                    rdfs:label ?kwalificatieniveau .
33            } UNION {
34                BIND("Totaal" AS ?kwalificatieniveau)
35            }
36        }
37    }
38    OPTIONAL {
39        {
40            SELECT DISTINCT
41                ?medewerker
42                ?kwalificatieniveau
43                ?dag_dienst
44                ?avond_dienst
45                ?nacht_dienst
46                ?pil
47                ?pnil
48            {
49                # BIND ("2024-01-15"^^xsd:date as ?peildatum)
50                # BIND ("000001254" as ?vestigingsnummer)
51
52                BIND (?peildatum as ?peildatum_argument)
53
54                VALUES ?personeels_overeenkomst 
55                            { 
56                                onz-pers:ArbeidsOvereenkomst
57                                onz-pers:UitzendOvereenkomst
58                                onz-pers:InhuurOvereenkomst
59                            }
60
61                ?planning
62                    a onz-plan:PlanInformationObject ;
63                    onz-plan:specifiesPlannedEntity ?geplande_periode ;
64                    onz-plan:hasPlannedStart ?start_gepland ;
65                    onz-plan:hasPlannedEnd ?eind_gepland .
66
67                ?geplande_periode a onz-plan:PlannedEntity ;
68                    onz-plan:hasPlannedType onz-pers:GewerktePeriode .
69
70                # PlannedEntityAssertion voor overeenkomst koppeling
71                ?overeenkomst_assertion a onz-plan:PlannedEntityAssertion ;
72                    onz-plan:hasPlannedSubject ?geplande_periode ;
73                    onz-plan:hasPlannedProperty onz-g:definedBy ;
74                    onz-plan:hasPlannedObject ?overeenkomst .
75
76                # PlannedEntityAssertion voor locatie koppeling  
77                ?locatie_assertion a onz-plan:PlannedEntityAssertion ;
78                    onz-plan:hasPlannedSubject ?geplande_periode ;
79                    onz-plan:hasPlannedProperty onz-g:hasPerdurantLocation ;
80                    onz-plan:hasPlannedObject ?werk_locatie .
81
82                BIND(HOURS(?start_gepland) AS ?start_uur)
83
84                ?werk_locatie onz-g:partOf* ?vestiging . # vind Vestiging die hoort bij werk_locatie
85
86                ?vestiging 
87                    a onz-org:Vestiging ;
88                    onz-g:identifiedBy ?vestigingsnummer_object .
89                ?vestigingsnummer_object
90                    a onz-org:Vestigingsnummer ;
91                    onz-g:hasDataValue ?vestigingsnummer . # filter vestiging op gegeven vestigingsnummer
92
93                ?overeenkomst 
94                    a ?personeels_overeenkomst ;
95                    onz-pers:heeftOpdrachtnemer ?medewerker ;
96                    onz-g:hasPart ?overeenkomst_afspraak .
97
98                ?overeenkomst_afspraak
99                    a onz-pers:WerkOvereenkomstAfspraak ;
100                    onz-g:startDatum ?start_afspraak ;
101                    onz-g:isAbout ?functie, ?locatie .
102
103                OPTIONAL {?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak}
104                FILTER (?start_afspraak <= ?peildatum_argument && (!BOUND(?eind_afspraak) || ?eind_afspraak >= ?peildatum_argument))
105
106                ?functie
107                    a onz-pers:ZorgverlenerFunctie ;
108                    onz-g:hasQuality /onz-g:hasQualityValue ?functie_niveau .
109
110                ?functie_niveau
111                    a onz-pers:ODBKwalificatieWaarde .
112                {
113                    ?functie_niveau
114                        a onz-pers:ODBKwalificatieWaarde ;
115                        rdfs:label ?kwalificatieniveau .
116                } UNION {
117                    BIND("Totaal" AS ?kwalificatieniveau ) 
118                }
119
120                BIND(STRDT(SUBSTR(STR(?start_gepland), 1, 10), xsd:date) AS ?start_gepland_datum)
121                # Filter op het 24-uurs DAN-tijdslot
122                FILTER(
123                    (?start_gepland_datum = ?peildatum_argument && ?start_uur >= 7) ||
124                    (?start_gepland_datum = (?peildatum_argument + "P1D"^^xsd:duration) && ?start_uur < 7)
125                )
126                
127                BIND(IF(?start_uur >= 7 && ?start_uur < 15, 1, 0) AS ?dag_dienst)
128                BIND(IF(?start_uur >= 15 && ?start_uur < 23, 1, 0) AS ?avond_dienst)
129                BIND(IF(?start_uur >= 23 || ?start_uur < 7, 1, 0) AS ?nacht_dienst)
130                BIND(IF (?personeels_overeenkomst = onz-pers:ArbeidsOvereenkomst, 1, 0) AS ?pil)
131                BIND(IF (?pil = 0, 1, 0) AS ?pnil)
132            }
133        }
134    }
135}
136GROUP BY ?kwalificatieniveau
137ORDER BY ?kwalificatieniveau
138