Uitwisselprofiel Kwaliteitsbeeld

Voorbeeld 6 Ziekteverzuimpercentage

Concepten

Relaties

Eigenschappen

Instanties

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

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

Heb je feedback?

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