Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

Versie:

Publicatiedatum:30-04-2024

Inwerkingtreding:18-04-2024




Bekijk bron...

11.3.4 Langdurend ziekteverzuimpercentage (excl. zwangerschapsverlof) Q4 2023

Concepten

Relaties

Eigenschappen

Instanties

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: Zorgkantoren 11.3.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 langdurend 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!