Uitwisselprofiel Zorginstituut Openbaarmaking kwaliteitsindicatoren verpleeghuiszorg

Versie:

Publicatiedatum:21-12-2023

Inwerkingtreding:21-12-2023




Bekijk bron...

2.3.1. Ziekteverzuimpercentage

Concepten

Relaties

Eigenschappen

Instanties

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: ODB Personele samenstelling 2.3.1
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#>
9
10SELECT
11    (SUM(?ziek_totaal - ?hersteld_totaal) AS ?teller)
12    (SUM(?noemer_deel) AS ?noemer)
13    ((?teller / ?noemer) * 100 AS ?indicator)
14{
15    SELECT
16        ?functie
17        ?omvang
18        (MAX(?overeenkomst_totaal) AS ?noemer_deel)
19        (SUM(?ziek_totaal_temp) AS ?ziek_totaal)
20        (MAX(?hersteld_totaal_temp) AS ?hersteld_totaal)
21    {
22        SELECT
23            ?functie
24            ?omvang
25            ?verzuimperiode
26            (MAX(?dagen_overeenkomst) AS ?overeenkomst_totaal)
27            (MAX(?dagen_ziek_reken) AS ?ziek_totaal_temp)
28            (SUM(?dagen_hersteld_reken) AS ?hersteld_totaal_temp)
29        {
30            BIND("2023-01-01"^^xsd:date AS ?start_periode)
31            BIND("2023-12-31"^^xsd:date AS ?eind_periode)
32            VALUES ?type_verzuim # Keuze in-/exclusief zwangerschapsverlog
33                    { 
34                        onz-pers:ZiektePeriode
35                        # onz-pers:ZwangerschapsVerlof
36                    }
37            ?functie 
38                a onz-pers:ZorgverlenerFunctie ;
39                onz-g:startDatum ?start_functie .
40            OPTIONAL {?functie onz-g:eindDatum ?eind_functie}
41            FILTER (?start_functie <= ?eind_periode && (?eind_functie >= ?start_periode || !BOUND(?eind_functie)))
42            BIND(IF(?start_functie < ?start_periode, ?start_periode, ?start_functie) AS ?start_functie_corr)
43            BIND(IF(?eind_functie > ?eind_periode || !BOUND(?eind_functie), ?eind_periode, ?eind_functie) AS ?eind_functie_corr)
44            ?overeenkomst
45                a onz-pers:ArbeidsOvereenkomst ;
46                onz-g:isAbout ?functie ;
47                onz-pers:heeftOpdrachtnemer ?persoon .
48            ?omvang 
49                a onz-pers:ContractOmvang ;
50                onz-g:partOf ?overeenkomst ;
51                onz-g:isAbout ?omvang_waarde ;
52                onz-g:startDatum ?start_omvang .
53                OPTIONAL {?omvang onz-g:eindDatum ?eind_omvang}
54            FILTER (?start_omvang <= ?eind_functie_corr && (?eind_omvang >= ?start_functie_corr || !BOUND(?eind_omvang)))
55            ?omvang_waarde
56                onz-g:hasDataValue ?omvang_waarde_getal ;
57                onz-g:hasUnitOfMeasure ?omvang_waarde_eenheid .
58            ?omvang_waarde_eenheid
59                onz-pers:hasDenominatorQualityValue onz-g:Week ;
60                onz-pers:hasNumeratorQualityValue onz-g:Uur ;
61                onz-g:hasDataValue ?omvang_waarde_factor .
62            BIND (?omvang_waarde_getal * ?omvang_waarde_factor / 36 AS ?ptf)
63            BIND (IF(?start_omvang < ?start_functie_corr, ?start_functie_corr, ?start_omvang) AS ?start_omvang_corr)
64            BIND (IF(?eind_omvang > ?eind_functie_corr || !BOUND(?eind_omvang), ?eind_functie_corr, ?eind_omvang) AS ?eind_omvang_corr)
65            ?start_omvang_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_omvang_reken .
66            ?eind_omvang_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_omvang_reken .
67            BIND ((?eind_omvang_reken - ?start_omvang_reken + 1) * ?ptf AS ?dagen_overeenkomst)
68            OPTIONAL {
69                ?persoon
70                    onz-g:isParticipantIn ?verzuimperiode .
71                ?verzuimperiode a ?type_verzuim ;
72                    onz-g:startDatum ?start_verzuim .
73                OPTIONAL {?verzuimperiode onz-g:eindDatum ?eind_verzuim}
74                OPTIONAL {
75                    ?verzuimperiode
76                        onz-g:hasQuality ?verzuimtijd .
77                    ?verzuimtijd
78                        a onz-pers:VerzuimTijdKwaliteit ;
79                        onz-g:hasQualityValue ?verzuimtijdwaarde .
80                    ?verzuimtijdwaarde
81                        a onz-g:DurationValue ;
82                        onz-g:hasDataValue ?ziektepercentage ;
83                        onz-g:hasUnitOfMeasure onz-g:percent ;
84                        onz-g:startDatum ?start_ziektepercentage .
85                    OPTIONAL {?verzuimtijdwaarde onz-g:eindDatum ?eind_ziektepercentage}
86                }
87            }
88            BIND (IF((?start_verzuim <= ?eind_omvang_corr && (?eind_verzuim >= ?start_omvang_corr || !BOUND(?eind_verzuim))), 1, 0) AS ?geen_ziekte_factor)
89            BIND(IF(!BOUND(?verzuimperiode), 0, ?geen_ziekte_factor) AS ?ziekte_factor)
90            BIND (IF(?start_verzuim < ?start_omvang_corr && ?ziekte_factor = 1, ?start_omvang_corr, ?start_verzuim) AS ?start_verzuim_corr)
91            BIND (IF(BOUND(?verzuimperiode) && (?eind_verzuim > ?eind_omvang_corr || !BOUND(?eind_verzuim)) && ?ziekte_factor = 1, ?eind_omvang_corr, ?eind_verzuim) AS ?eind_verzuim_corr)
92            BIND (IF((?start_ziektepercentage > ?eind_verzuim_corr || ?eind_ziektepercentage < ?start_verzuim_corr), 0, 1) AS ?geen_percentage_factor)
93            BIND(IF(!BOUND(?geen_percentage_factor), 0, ?geen_percentage_factor * ?ziekte_factor) AS ?percentage_factor)
94            BIND (IF(?start_ziektepercentage < ?start_verzuim_corr, ?start_verzuim_corr, ?start_ziektepercentage) AS ?start_ziektepercentage_corr)
95            BIND (IF(?eind_ziektepercentage > ?eind_verzuim_corr || !BOUND(?eind_ziektepercentage), ?eind_verzuim_corr, ?eind_ziektepercentage) AS ?eind_ziektepercentage_corr)
96            
97            # Maak dummy verzuim en ziektepercentage datums als deze ontbreken, anders werkt de lookup naar de time:numerPosition niet
98            BIND (IF(BOUND(?start_verzuim_corr), ?start_verzuim_corr, "2023-01-01"^^xsd:date) AS ?start_verzuim_corr_bound)
99            BIND (IF(BOUND(?eind_verzuim_corr), ?eind_verzuim_corr, "2022-12-31"^^xsd:date) AS ?eind_verzuim_corr_bound)
100            BIND (IF(BOUND(?start_ziektepercentage_corr), ?start_ziektepercentage_corr, "2023-01-01"^^xsd:date) AS ?start_zp_bound)
101            BIND (IF(BOUND(?eind_ziektepercentage_corr), ?eind_ziektepercentage_corr, "2022-12-31"^^xsd:date) AS ?eind_zp_bound)
102            ?start_verzuim_corr_bound ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_verzuim_reken .
103            ?eind_verzuim_corr_bound ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_verzuim_reken .
104            ?start_zp_bound ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_zp_reken .
105            ?eind_zp_bound ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_zp_reken .
106
107            BIND ((?eind_zp_reken - ?start_zp_reken + 1) * ?ptf * ?percentage_factor * (100 - ?ziektepercentage)/100 AS ?dagen_hersteld)
108            BIND ((?eind_verzuim_reken - ?start_verzuim_reken + 1) * ?ptf * ?ziekte_factor AS ?dagen_ziek)
109            BIND (IF(!BOUND(?dagen_ziek), 0, ?dagen_ziek) AS ?dagen_ziek_reken)
110            BIND (IF(!BOUND(?dagen_hersteld), 0, ?dagen_hersteld) AS ?dagen_hersteld_reken)
111        }
112        GROUP BY ?functie ?omvang ?verzuimperiode
113    }
114    GROUP BY ?functie ?omvang
115}

Heb je feedback?

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