Let op: dit is een oudere versie van deze publicatie. Ga naar de laatste versie

Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

11.1.4 Kortdurend ziekteverzuimpercentage (excl. zwangerschapsverlof) Q4 2023

Concepten

Relaties

Eigenschappen

Instanties

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: Zorgkantoren 11.1.4
2# Parameters: -
3# Ontologie: versie 2.3.0 of nieuwer
4
5PREFIX onz-pers: <http://purl.org/ozo/onz-pers#>
6PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
7PREFIX onz-g: <http://purl.org/ozo/onz-g#>
8PREFIX time: <http://www.w3.org/2006/time#>
9PREFIX onz-org: <http://purl.org/ozo/onz-org#>
10
11SELECT
12    ?vestiging
13    ?zorg
14    (SUM(?ziek_totaal - ?hersteld_totaal) AS ?teller)
15    (SUM(?noemer_deel) AS ?noemer)
16    ((?teller / ?noemer) * 100 AS ?indicator)
17{
18    SELECT
19        ?functie
20        ?omvang
21        ?vestiging
22        ?zorg
23        (MAX(?overeenkomst_totaal) AS ?noemer_deel)
24        (SUM(?ziek_totaal_temp) AS ?ziek_totaal)
25        (MAX(?hersteld_totaal_temp) AS ?hersteld_totaal)
26    {
27        SELECT
28            ?functie
29            ?omvang
30            ?vestiging
31            ?zorg
32            ?verzuimperiode
33            (MAX(?dagen_overeenkomst) AS ?overeenkomst_totaal)
34            (MAX(?dagen_ziek_reken) AS ?ziek_totaal_temp)
35            (SUM(?dagen_hersteld_reken) AS ?hersteld_totaal_temp)
36        {
37            BIND("2023-10-01"^^xsd:date AS ?start_periode)
38            BIND("2023-12-31"^^xsd:date AS ?eind_periode)
39            VALUES ?type_verzuim # Keuze in-/exclusief zwangerschapsverlog
40                    { 
41                        onz-pers:ZiektePeriode
42                        # onz-pers:ZwangerschapsVerlof
43                    }
44            ?functie 
45                a onz-g:OccupationalPositionRole ;
46                onz-g:startDatum ?start_functie .
47                OPTIONAL {?functie onz-g:eindDatum ?eind_functie}
48                FILTER (?start_functie <= ?eind_periode && (?eind_functie >= ?start_periode || !BOUND(?eind_functie)))
49                BIND(IF(?start_functie < ?start_periode, ?start_periode, ?start_functie) AS ?start_functie_corr)
50                BIND(IF(?eind_functie > ?eind_periode || !BOUND(?eind_functie), ?eind_periode, ?eind_functie) AS ?eind_functie_corr)
51                OPTIONAL 
52                {
53                    ?functie a onz-pers:ZorgverlenerFunctie .
54                    BIND(1 AS ?zorgfunctie)
55                }
56                BIND(IF(BOUND(?zorgfunctie),"Zorg","Niet-zorg") AS ?zorg)
57            ?overeenkomst
58                a onz-pers:ArbeidsOvereenkomst ;
59                onz-g:isAbout ?functie ;
60                onz-pers:heeftOpdrachtnemer ?persoon .
61            ?locatie 
62                a onz-g:StationaryArtifact ;
63                ^onz-g:isAbout ?overeenkomst ;
64                onz-g:partOf* ?v .
65            ?v 
66                a onz-org:Vestiging ;
67                onz-g:identifiedBy ?vest_nr.
68            ?vest_nr
69                a onz-org:Vestigingsnummer .
70                {
71                    ?vest_nr onz-g:hasDataValue ?vestiging .
72                } UNION {
73                    BIND ("Totaal organisatie" AS ?vestiging)
74                }
75            ?omvang 
76                a onz-pers:ContractOmvang ;
77                onz-g:partOf ?overeenkomst ;
78                onz-g:isAbout ?omvang_waarde ;
79                onz-g:startDatum ?start_omvang .
80                OPTIONAL {?omvang onz-g:eindDatum ?eind_omvang}
81            FILTER (?start_omvang <= ?eind_functie_corr && (?eind_omvang >= ?start_functie_corr || !BOUND(?eind_omvang)))
82            ?omvang_waarde
83                onz-g:hasDataValue ?omvang_waarde_getal ;
84                onz-g:hasUnitOfMeasure ?omvang_waarde_eenheid .
85            ?omvang_waarde_eenheid
86                onz-pers:hasDenominatorQualityValue onz-g:Week ;
87                onz-pers:hasNumeratorQualityValue onz-g:Uur ;
88                onz-g:hasDataValue ?omvang_waarde_factor .
89            BIND (?omvang_waarde_getal * ?omvang_waarde_factor / 36 AS ?ptf)
90            BIND (IF(?start_omvang < ?start_functie_corr, ?start_functie_corr, ?start_omvang) AS ?start_omvang_corr)
91            BIND (IF(?eind_omvang > ?eind_functie_corr || !BOUND(?eind_omvang), ?eind_functie_corr, ?eind_omvang) AS ?eind_omvang_corr)
92            ?start_omvang_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_omvang_reken .
93            ?eind_omvang_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_omvang_reken .
94            BIND ((?eind_omvang_reken - ?start_omvang_reken + 1) * ?ptf AS ?dagen_overeenkomst)
95            OPTIONAL {
96                ?persoon
97                    onz-g:isParticipantIn ?verzuimperiode .
98                ?verzuimperiode a ?type_verzuim ;
99                    onz-g:startDatum ?start_verzuim .
100                ?start_verzuim ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_verzuimduur_reken .
101                OPTIONAL 
102                {
103                    ?verzuimperiode onz-g:eindDatum ?eind_verzuim_voorl .
104                }
105                OPTIONAL {
106                    ?verzuimperiode
107                        onz-g:hasQuality ?verzuimtijd .
108                    ?verzuimtijd
109                        a onz-pers:VerzuimTijdKwaliteit ;
110                        onz-g:hasQualityValue ?verzuimtijdwaarde .
111                    ?verzuimtijdwaarde
112                        a onz-g:DurationValue ;
113                        onz-g:hasDataValue ?ziektepercentage ;
114                        onz-g:hasUnitOfMeasure onz-g:percent ;
115                        onz-g:startDatum ?start_ziektepercentage .
116                    OPTIONAL {?verzuimtijdwaarde onz-g:eindDatum ?eind_ziektepercentage}
117                }
118            }
119            BIND(IF(BOUND(?eind_verzuim_voorl), ?eind_verzuim_voorl, ?eind_periode) AS ?eind_verzuim)
120            ?eind_verzuim ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_verzuimduur_reken .
121            BIND(?eind_verzuimduur_reken - ?start_verzuimduur_reken + 1 AS ?verzuimduur)
122            FILTER(?verzuimduur <= 28 || !BOUND(?verzuimduur)) # Alleen kortdurend verzuim meenemen
123
124            BIND (IF((?start_verzuim <= ?eind_omvang_corr && (?eind_verzuim >= ?start_omvang_corr || !BOUND(?eind_verzuim))), 1, 0) AS ?geen_ziekte_factor)
125            BIND (IF(!BOUND(?verzuimperiode), 0, ?geen_ziekte_factor) AS ?ziekte_factor)
126            BIND (IF(?start_verzuim < ?start_omvang_corr && ?ziekte_factor = 1, ?start_omvang_corr, ?start_verzuim) AS ?start_verzuim_corr)
127            BIND (IF(BOUND(?verzuimperiode) && (?eind_verzuim > ?eind_omvang_corr || !BOUND(?eind_verzuim)) && ?ziekte_factor = 1, ?eind_omvang_corr, ?eind_verzuim) AS ?eind_verzuim_corr)
128            BIND (IF((?start_ziektepercentage > ?eind_verzuim_corr || ?eind_ziektepercentage < ?start_verzuim_corr), 0, 1) AS ?geen_percentage_factor)
129            BIND (IF(!BOUND(?geen_percentage_factor), 0, ?geen_percentage_factor * ?ziekte_factor) AS ?percentage_factor)
130            BIND (IF(?start_ziektepercentage < ?start_verzuim_corr, ?start_verzuim_corr, ?start_ziektepercentage) AS ?start_ziektepercentage_corr)
131            BIND (IF(?eind_ziektepercentage > ?eind_verzuim_corr || !BOUND(?eind_ziektepercentage), ?eind_verzuim_corr, ?eind_ziektepercentage) AS ?eind_ziektepercentage_corr)
132            
133            # Maak dummy verzuim en ziektepercentage datums als deze ontbreken, anders werkt de lookup naar de time:numerPosition niet
134            BIND (IF(BOUND(?start_verzuim_corr), ?start_verzuim_corr, "2023-01-01"^^xsd:date) AS ?start_verzuim_corr_bound)
135            BIND (IF(BOUND(?eind_verzuim_corr), ?eind_verzuim_corr, "2022-12-31"^^xsd:date) AS ?eind_verzuim_corr_bound)
136            BIND (IF(BOUND(?start_ziektepercentage_corr), ?start_ziektepercentage_corr, "2023-01-01"^^xsd:date) AS ?start_zp_bound)
137            BIND (IF(BOUND(?eind_ziektepercentage_corr), ?eind_ziektepercentage_corr, "2022-12-31"^^xsd:date) AS ?eind_zp_bound)
138            ?start_verzuim_corr_bound ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_verzuim_reken .
139            ?eind_verzuim_corr_bound ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_verzuim_reken .
140            ?start_zp_bound ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_zp_reken .
141            ?eind_zp_bound ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_zp_reken .
142
143            BIND ((?eind_zp_reken - ?start_zp_reken + 1)*?ptf*?percentage_factor*(100 - ?ziektepercentage)/100 AS ?dagen_hersteld)
144            BIND ((?eind_verzuim_reken - ?start_verzuim_reken + 1) * ?ptf * ?ziekte_factor AS ?dagen_ziek)
145            BIND (IF(!BOUND(?dagen_ziek), 0, ?dagen_ziek) AS ?dagen_ziek_reken)
146            BIND (IF(!BOUND(?dagen_hersteld), 0, ?dagen_hersteld) AS ?dagen_hersteld_reken)
147        }
148        GROUP BY ?vestiging ?zorg ?functie ?omvang ?verzuimperiode ?vestiging ?zorg
149    }
150    GROUP BY ?vestiging ?zorg ?functie ?omvang
151}
152GROUP BY ?vestiging ?zorg
153ORDER BY ?vestiging DESC(?zorg)
154

Heb je feedback?

Loopt u tegen een issue of vraag aan bij het KIK-V product? Neem dan contact met ons op!