Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling


Publicatiedatum:
03-10-2025

Inwerkingtreding:
03-10-2025

11.2 Wat is het kortdurend ziekteverzuimpercentage incl. zwangerschapsverlof?

Concepten

Relaties

Eigenschappen

Instanties

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: Zorgkantoren 11.2
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 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	(?vestiging AS ?Organisatieindeling)
13	(IF(?noemer_zorg = 0, "Ongedefinieerd", 100 * ?teller_zorg / ?noemer_zorg) AS ?Zorg)
14	(IF(?noemer_niet_zorg = 0, "Ongedefinieerd", 100 * ?teller_niet_zorg / ?noemer_niet_zorg) AS ?Niet_zorg)
15	(IF(?noemer_totaal = 0, "Ongedefinieerd", 100 * ?teller_totaal / ?noemer_totaal) AS ?Totaal)
16{
17    SELECT 
18        ?vestiging
19        (SUM(?zorg * ?netto_verzuim_totaal) AS ?teller_zorg)
20        (SUM(?zorg * ?netto_dagen_afspraak) AS ?noemer_zorg)
21        (SUM(?niet_zorg * ?netto_verzuim_totaal) AS ?teller_niet_zorg)
22        (SUM(?niet_zorg * ?netto_dagen_afspraak) AS ?noemer_niet_zorg)
23        (?teller_zorg + ?teller_niet_zorg AS ?teller_totaal)
24        (?noemer_zorg + ?noemer_niet_zorg AS ?noemer_totaal)
25    {
26        {
27            SELECT
28                ?zorg
29                ?niet_zorg
30                ?overeenkomst_afspraak
31				(MAX(?dagen_afspraak * ?ptf) AS ?netto_dagen_afspraak)
32                (SUM((?dagen_verzuim - ?totaal_hersteld) * ?ptf) AS ?netto_verzuim_totaal)            
33            {
34                SELECT
35                    ?zorg
36                    ?niet_zorg
37                    ?overeenkomst_afspraak
38                    ?ptf
39                    ?ziekte
40                    ?dagen_afspraak
41                    ?dagen_verzuim
42                    (SUM(?dagen_hersteld) AS ?totaal_hersteld)
43                {
44                    # BIND(2023 AS ?jaar)
45                    # BIND("Q4" AS ?kwartaal)
46                    BIND(IF(?kwartaal = 'Q1', xsd:date(CONCAT(STR(?jaar), '-01-01')),
47                        IF(?kwartaal = 'Q2', xsd:date(CONCAT(STR(?jaar), '-04-01')),
48                        IF(?kwartaal = 'Q3', xsd:date(CONCAT(STR(?jaar), '-07-01')),
49                        IF(?kwartaal = 'Q4', xsd:date(CONCAT(STR(?jaar), '-10-01')),
50                        '')))) AS ?start_periode)
51                    BIND(?start_periode + "P3M"^^xsd:duration + "-P1D"^^xsd:duration AS ?eind_periode)
52                    
53                    ?eind_periode ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_periode_reken .
54                    ?overeenkomst 
55                        a onz-pers:ArbeidsOvereenkomst ;
56                        onz-g:hasPart ?overeenkomst_afspraak .
57                    ?overeenkomst_afspraak
58                        a onz-pers:WerkOvereenkomstAfspraak ;
59                        onz-g:startDatum ?start_afspraak .
60                    OPTIONAL { ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak }
61                    FILTER (?start_afspraak <= ?eind_periode && (?eind_afspraak >= ?start_periode || !BOUND(?eind_afspraak)))
62                    ?overeenkomst_afspraak onz-g:hasPart ?omvang .
63                    ?omvang
64                        a onz-pers:ContractOmvang ;
65                        onz-g:isAbout ?omvang_waarde .
66                    ?omvang_waarde
67                        a onz-pers:ContractOmvangWaarde ;
68                        onz-g:hasDataValue ?omvang_getal ;
69                        onz-g:hasUnitOfMeasure ?omvang_eenheid .
70                    ?omvang_eenheid onz-g:hasDataValue ?eenheid_factor .
71                    BIND(?omvang_getal/(36/?eenheid_factor) AS ?ptf)
72                    BIND(IF(EXISTS {?overeenkomst_afspraak onz-g:isAbout/a onz-pers:ZorgverlenerFunctie}, 1, 0) AS ?zorg)
73                    BIND(IF(?zorg = 0, 1, 0) AS ?niet_zorg)
74                    BIND(IF(?start_afspraak < ?start_periode, ?start_periode, ?start_afspraak) AS ?start_afspraak_corr)
75                    BIND(IF(?eind_afspraak > ?eind_periode || !BOUND(?eind_afspraak), ?eind_periode, ?eind_afspraak) AS ?eind_afspraak_corr)
76                    ?start_afspraak_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_afspraak_reken .
77                    ?eind_afspraak_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_afspraak_reken .
78                    BIND(?eind_afspraak_reken - ?start_afspraak_reken + 1 AS ?dagen_afspraak)
79                    OPTIONAL {
80                        VALUES ?type_verzuim # Keuze in-/exclusief zwangerschapsverlog
81                        { 
82                            onz-pers:ZiektePeriode
83                            onz-pers:ZwangerschapsVerlof
84                        }
85                        ?ziekte 
86                            a ?type_verzuim ;
87                            onz-g:definedBy ?overeenkomst ;
88                            onz-g:startDatum ?start_ziekte_periode .
89                        ?start_ziekte_periode ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_ziekte_periode_reken .
90                        OPTIONAL {
91                            ?ziekte onz-g:eindDatum ?eind_ziekte_periode_temp .
92                            ?eind_ziekte_periode_temp ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_ziekte_periode_temp_reken .
93                        }
94                        # FILTER(?start_ziekte_periode <= ?eind_afspraak_corr && (?eind_ziekte_periode_temp >= ?start_afspraak_corr || !BOUND(?eind_ziekte_periode_temp)))
95                        OPTIONAL {
96                            ?ziekte onz-g:hasQuality ?verzuim_tijd .
97                            ?verzuim_tijd
98                                a onz-pers:VerzuimTijdKwaliteit ;
99                                onz-g:hasQualityValue ?verzuim_waarde .
100                            ?verzuim_waarde
101                                onz-g:hasUnitOfMeasure onz-g:percent ;
102                                onz-g:startDatum ?start_verzuim_waarde_temp ;
103                                onz-g:hasDataValue ?verzuim_percentage .
104                            ?start_verzuim_waarde_temp ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_verzuim_waarde_temp_reken_temp
105                            OPTIONAL {
106                                ?verzuim_waarde onz-g:eindDatum ?eind_verzuim_waarde_temp .
107                                ?eind_verzuim_waarde_temp ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_verzuim_waarde_temp_reken_temp
108                            }
109                        }
110                    }
111                    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)
112                    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)
113
114                    # Gebruikt totale ziekteperiode t/m eind meetperiode als maat voor kort/langdurend verzuim
115                    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)
116                    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)
117                    BIND(IF(!BOUND(?ziekte), ?unbound, ?eind_ziekte_periode_reken - ?start_ziekte_periode_reken + 1) AS ?dagen_ziekte_periode)
118                    # Filter kort/langdurend verzuim
119                    BIND(IF(?dagen_ziekte_periode <= 28 || !BOUND(?ziekte), 1, 0) AS ?voorwaarde_1)
120                    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)
121                    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)
122                    BIND(?voorwaarde_1 * ?voorwaarde_2 * ?voorwaarde_3 AS ?geldige_ziekte)
123
124                    BIND(IF(BOUND(?verzuim_tijd), ?geldige_ziekte * (100 - ?verzuim_percentage)/100 * (?eind_verzuim_waarde_reken - ?start_verzuim_waarde_reken + 1), 0) AS ?dagen_hersteld)
125                    BIND(IF(!BOUND(?ziekte), ?unbound, IF(?start_ziekte_periode_reken < ?start_afspraak_reken, ?start_afspraak_reken, ?start_ziekte_periode_reken)) AS ?start_ziekte_reken)
126                    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)
127                    BIND(IF(BOUND(?ziekte), ?geldige_ziekte * (?eind_ziekte_reken - ?start_ziekte_reken + 1), 0) AS ?dagen_verzuim)
128                }
129                GROUP BY
130                    ?zorg
131                    ?niet_zorg
132                    ?overeenkomst_afspraak
133                    ?ptf
134                    ?ziekte
135                    ?dagen_afspraak
136                    ?dagen_verzuim
137            }
138            GROUP BY
139                ?zorg
140                ?niet_zorg
141                ?overeenkomst_afspraak
142        }
143        # BIND(onz-org:ZorgkantoorMenzis AS ?zorgkantoor)
144        ?overeenkomst_afspraak onz-g:isAbout ?locatie .
145        ?locatie 
146            a onz-g:StationaryArtifact ;
147            onz-g:partOf* ?vestiging_uri .
148        ?vestiging_uri a onz-org:Vestiging ;
149            onz-g:hasLocalizableArea/onz-g:identifiedBy/onz-g:hasPart/onz-g:hasPart ?postcode_6 .
150        BIND(IRI(SUBSTR(STR(?postcode_6), 1, STRLEN(STR(?postcode_6)) - 2)) AS ?postcode)
151        ?pc_gebied 
152            onz-g:identifiedBy ?postcode ;
153            onz-g:partOf+ ?zk_regio .
154        ?zk_regio a onz-org:ZorgkantoorRegio .
155        ?zorgkantoor onz-g:hasOperatingRange ?zk_regio .
156        {     
157            ?vestiging_uri onz-g:identifiedBy ?vest_nr.
158            ?vest_nr a onz-org:Vestigingsnummer ;
159            onz-g:hasDataValue ?vestiging .
160            BIND(?zorgkantoor AS ?zorgkantoor_vestiging)
161        } UNION {
162            # Includeer ook de organisatie als geheel en label deze als vestiging
163            ?vestiging_uri onz-org:vestigingVan ?organisatie_uri .
164            BIND("Totaal organisatie" AS ?vestiging)
165            BIND("n.v.t." AS ?zorgkantoor_vestiging)
166        }
167    }
168    GROUP BY ?vestiging
169    ORDER BY ?vestiging 
170}
171ORDER BY ?vestiging
172