Uitwisselprofiel Ministerie van VWS Jaarverantwoording Zorg

Over Uitwisselprofiel Ministerie van VWS Jaarverantwoording Zorg


Publicatiedatum:
22-01-2026

Inwerkingtreding:
22-01-2026

4.2. Wat is het ziekteverzuimpercentage van de zorgverleners?

Concepten

Relaties

Eigenschappen

Instanties

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: VWS JVZ 4.2
2# Parameters: ?jaar
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 time: <http://www.w3.org/2006/time#>
8PREFIX onz-pers: <http://purl.org/ozo/onz-pers#>
9PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
10
11SELECT
12    (?teller AS ?Teller)
13    (?noemer AS ?Noemer)
14    (IF(?noemer = 0, "Ongedefineerd", 100 * ?teller / ?noemer) AS ?Indicator)
15{
16    SELECT 
17        (SUM(?netto_verzuim_totaal) AS ?teller)
18        (SUM(?netto_dagen_afspraak) AS ?noemer)
19    {
20        {
21            SELECT
22                ?overeenkomst_afspraak
23                (MAX(?dagen_afspraak * ?ptf) AS ?netto_dagen_afspraak)
24                (SUM((?dagen_verzuim - ?totaal_hersteld) * ?ptf) AS ?netto_verzuim_totaal)
25            {
26                SELECT
27                    ?overeenkomst_afspraak
28                    ?ptf
29                    ?ziekte
30                    ?dagen_afspraak
31                    ?dagen_verzuim
32                    (SUM(?dagen_hersteld) AS ?totaal_hersteld)
33                {
34                    # BIND(2024 AS ?jaar)  # Parameter
35
36                    BIND(STRDT(CONCAT(STR(?jaar), "-01-01"), xsd:date) AS ?start_periode)
37                    BIND(STRDT(CONCAT(STR(?jaar), "-12-31"), xsd:date) AS ?eind_periode)  
38                    
39                    ?eind_periode ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_periode_reken .
40                    ?overeenkomst 
41                        a onz-pers:ArbeidsOvereenkomst ;
42                        onz-g:hasPart ?overeenkomst_afspraak .
43                    ?overeenkomst_afspraak
44                        a onz-pers:WerkOvereenkomstAfspraak ;
45                        onz-g:isAbout/a onz-pers:ZorgverlenerFunctie ;
46                        onz-g:startDatum ?start_afspraak .
47                    OPTIONAL { ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak }
48                    FILTER (?start_afspraak <= ?eind_periode && (?eind_afspraak >= ?start_periode || !BOUND(?eind_afspraak)))
49                    ?overeenkomst_afspraak onz-g:hasPart ?omvang .
50                    ?omvang
51                        a onz-pers:ContractOmvang ;
52                        onz-g:isAbout ?omvang_waarde .
53                    ?omvang_waarde
54                        a onz-pers:ContractOmvangWaarde ;
55                        onz-g:hasDataValue ?omvang_getal ;
56                        onz-g:hasUnitOfMeasure ?omvang_eenheid .
57                    ?omvang_eenheid onz-g:hasDataValue ?eenheid_factor .
58                    BIND(?omvang_getal/(36/?eenheid_factor) AS ?ptf)
59                    
60                    BIND(IF(?start_afspraak < ?start_periode, ?start_periode, ?start_afspraak) AS ?start_afspraak_corr)
61                    BIND(IF(?eind_afspraak > ?eind_periode || !BOUND(?eind_afspraak), ?eind_periode, ?eind_afspraak) AS ?eind_afspraak_corr)
62                    ?start_afspraak_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_afspraak_reken .
63                    ?eind_afspraak_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_afspraak_reken .
64                    BIND(?eind_afspraak_reken - ?start_afspraak_reken + 1 AS ?dagen_afspraak)
65                    OPTIONAL {
66                        VALUES ?type_verzuim # Keuze in-/exclusief zwangerschapsverlog
67                        { 
68                            onz-pers:ZiektePeriode
69                            # onz-pers:ZwangerschapsVerlof
70                        }
71                        ?ziekte 
72                            a ?type_verzuim ;
73                            onz-g:definedBy ?overeenkomst ;
74                            onz-g:startDatum ?start_ziekte_periode .
75                        ?start_ziekte_periode ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_ziekte_periode_reken .
76                        OPTIONAL {
77                            ?ziekte onz-g:eindDatum ?eind_ziekte_periode_temp .
78                            ?eind_ziekte_periode_temp ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_ziekte_periode_temp_reken .
79                        }
80                        # FILTER(?start_ziekte_periode <= ?eind_afspraak_corr && (?eind_ziekte_periode_temp >= ?start_afspraak_corr || !BOUND(?eind_ziekte_periode_temp)))
81                        OPTIONAL {
82                            ?ziekte onz-g:hasQuality ?verzuim_tijd .
83                            ?verzuim_tijd
84                                a onz-pers:VerzuimTijdKwaliteit ;
85                                onz-g:hasQualityValue ?verzuim_waarde .
86                            ?verzuim_waarde
87                                onz-g:hasUnitOfMeasure onz-g:percent ;
88                                onz-g:startDatum ?start_verzuim_waarde_temp ;
89                                onz-g:hasDataValue ?verzuim_percentage .
90                            ?start_verzuim_waarde_temp ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_verzuim_waarde_temp_reken_temp
91                            OPTIONAL {
92                                ?verzuim_waarde onz-g:eindDatum ?eind_verzuim_waarde_temp .
93                                ?eind_verzuim_waarde_temp ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_verzuim_waarde_temp_reken_temp
94                            }
95                        }
96                    }
97                    BIND(IF(!BOUND(?start_verzuim_waarde_temp), ?unbound, IF(?start_verzuim_waarde_temp_reken_temp < ?start_afspraak_reken, ?start_afspraak_reken, ?start_verzuim_waarde_temp_reken_temp)) AS ?start_verzuim_waarde_reken)
98                    BIND(IF(!BOUND(?start_verzuim_waarde_temp), ?unbound, IF(!BOUND(?eind_verzuim_waarde_temp_reken_temp) || ?eind_verzuim_waarde_temp_reken_temp > ?eind_afspraak_reken, ?eind_afspraak_reken, ?eind_verzuim_waarde_temp_reken_temp)) AS ?eind_verzuim_waarde_reken)
99
100                    # Gebruikt totale ziekteperiode t/m eind meetperiode als maat voor kort/langdurend verzuim
101                    BIND(IF(!BOUND(?ziekte), ?unbound, IF(!BOUND(?eind_ziekte_periode_temp) || ?eind_ziekte_periode_temp > ?eind_periode, ?eind_periode, ?eind_ziekte_periode_temp)) AS ?eind_ziekte_periode)
102                    BIND(IF(!BOUND(?ziekte), ?unbound, IF(!BOUND(?eind_ziekte_periode_temp_reken) || ?eind_ziekte_periode_temp_reken > ?eind_periode_reken, ?eind_periode_reken, ?eind_ziekte_periode_temp_reken)) AS ?eind_ziekte_periode_reken)
103                    BIND(IF(!BOUND(?ziekte), ?unbound, ?eind_ziekte_periode_reken - ?start_ziekte_periode_reken + 1) AS ?dagen_ziekte_periode)
104                    # Filter kort/langdurend verzuim
105                    #BIND(IF(?dagen_ziekte_periode <= 28 || !BOUND(?ziekte), 1, 0) AS ?voorwaarde_1)
106                    BIND(IF(BOUND(?ziekte) && (?start_ziekte_periode <= ?eind_afspraak_corr && (?eind_ziekte_periode >= ?start_afspraak_corr || !BOUND(?eind_ziekte_periode))), 1, 0) AS ?voorwaarde_2)
107                    BIND(IF(!BOUND(?verzuim_tijd) || (BOUND(?verzuim_tijd) && (?start_verzuim_waarde_temp <= ?eind_afspraak_corr && (?eind_verzuim_waarde_temp >= ?start_afspraak_corr || !BOUND(?eind_verzuim_waarde_temp)))), 1, 0) AS ?voorwaarde_3)
108                    BIND(?voorwaarde_2 * ?voorwaarde_3 AS ?geldige_ziekte)
109
110                    BIND(IF(BOUND(?verzuim_tijd), ?geldige_ziekte * (100 - ?verzuim_percentage)/100 * (?eind_verzuim_waarde_reken - ?start_verzuim_waarde_reken + 1), 0) AS ?dagen_hersteld)
111                    BIND(IF(!BOUND(?ziekte), ?unbound, IF(?start_ziekte_periode_reken < ?start_afspraak_reken, ?start_afspraak_reken, ?start_ziekte_periode_reken)) AS ?start_ziekte_reken)
112                    BIND(IF(!BOUND(?ziekte), ?unbound, IF(?eind_ziekte_periode_temp_reken > ?eind_afspraak_reken || !BOUND(?eind_ziekte_periode_temp_reken), ?eind_afspraak_reken, ?eind_ziekte_periode_temp_reken)) AS ?eind_ziekte_reken)
113                    BIND(IF(BOUND(?ziekte), ?geldige_ziekte * (?eind_ziekte_reken - ?start_ziekte_reken + 1), 0) AS ?dagen_verzuim)
114                }
115                GROUP BY
116                    ?overeenkomst_afspraak
117                    ?ptf
118                    ?ziekte
119                    ?dagen_afspraak
120                    ?dagen_verzuim
121            }
122            GROUP BY
123                ?overeenkomst_afspraak
124        }
125        ?overeenkomst_afspraak onz-g:isAbout ?locatie .
126        ?locatie 
127            a onz-g:StationaryArtifact ;
128            onz-g:partOf* ?vestiging_uri .
129        ?vestiging_uri a onz-org:Vestiging ;
130        .
131    }
132}