Uitwisselprofiel NZa basisinformatie kostenonderzoek

Over Uitwisselprofiel NZa basisinformatie kostenonderzoek

1.1.2-pilot


Publicatiedatum:
06-03-2025

Inwerkingtreding:
06-03-2025

1.1. Ziekteverzuimpercentage (excl. zwangerschapsverlof)

Concepten

Relaties

Eigenschappen

Instanties

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: NZA 1.1
2# Parameters: ?startperiode, ?eindperiode
3# Ontologie: versie 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    ?teller
12    ?noemer
13    (IF(?noemer = 0, "Ongedefineerd", 100 * ?teller / ?noemer) AS ?indicator)
14WHERE {
15    SELECT
16        (SUM(?netto_verzuim_totaal) AS ?teller)
17        (SUM(?netto_dagen_afspraak) AS ?noemer)
18    {
19        {
20            SELECT
21                ?overeenkomst_afspraak
22                (MAX(?dagen_afspraak * ?ptf) AS ?netto_dagen_afspraak)
23                (SUM((?dagen_verzuim - ?totaal_hersteld) * ?ptf) AS ?netto_verzuim_totaal)
24            {
25                SELECT
26                    ?overeenkomst_afspraak
27                    ?ptf
28                    ?ziekte
29                    ?dagen_afspraak
30                    ?dagen_verzuim
31                    (SUM(?dagen_hersteld) AS ?totaal_hersteld)
32                {
33                    BIND ("2024-01-01"^^xsd:date AS ?startperiode)
34                    BIND ("2024-12-31"^^xsd:date AS ?eindperiode)
35                    
36                    ?eindperiode ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eindperiode_reken .
37                    ?overeenkomst 
38                        a onz-pers:ArbeidsOvereenkomst ;
39                        onz-g:hasPart ?overeenkomst_afspraak .
40                    ?overeenkomst_afspraak
41                        a onz-pers:WerkOvereenkomstAfspraak ;
42                        onz-g:startDatum ?start_afspraak .
43                    OPTIONAL { ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak }
44                    FILTER (?start_afspraak <= ?eindperiode && (?eind_afspraak >= ?startperiode || !BOUND(?eind_afspraak)))
45                    ?overeenkomst_afspraak onz-g:hasPart ?omvang .
46                    ?omvang 
47                        a onz-pers:ContractOmvang ;
48                        onz-g:isAbout ?omvang_waarde .
49                    ?omvang_waarde
50                        a onz-pers:ContractOmvangWaarde ;
51                        onz-g:hasDataValue ?omvang_getal ;
52                        onz-g:hasUnitOfMeasure ?omvang_eenheid .
53                    ?omvang_eenheid onz-g:hasDataValue ?eenheid_factor .
54                    BIND(?omvang_getal/(36/?eenheid_factor) AS ?ptf)
55                    
56                    BIND(IF(?start_afspraak < ?startperiode, ?startperiode, ?start_afspraak) AS ?start_afspraak_corr)
57                    BIND(IF(?eind_afspraak > ?eindperiode || !BOUND(?eind_afspraak), ?eindperiode, ?eind_afspraak) AS ?eind_afspraak_corr)
58                    ?start_afspraak_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_afspraak_reken .
59                    ?eind_afspraak_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_afspraak_reken .
60                    BIND(?eind_afspraak_reken - ?start_afspraak_reken + 1 AS ?dagen_afspraak)
61                    OPTIONAL {
62                        VALUES ?type_verzuim # Keuze in-/exclusief zwangerschapsverlog
63                        { 
64                            onz-pers:ZiektePeriode
65                            # onz-pers:ZwangerschapsVerlof
66                        }
67                        ?ziekte 
68                            a ?type_verzuim ;
69                            onz-g:definedBy ?overeenkomst ;
70                            onz-g:startDatum ?start_ziekte_periode .
71                        ?start_ziekte_periode ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_ziekte_periode_reken .
72                        OPTIONAL {
73                            ?ziekte onz-g:eindDatum ?eind_ziekte_periode_temp .
74                            ?eind_ziekte_periode_temp ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_ziekte_periode_temp_reken .
75                        }
76                        # FILTER(?start_ziekte_periode <= ?eind_afspraak_corr && (?eind_ziekte_periode_temp >= ?start_afspraak_corr || !BOUND(?eind_ziekte_periode_temp)))
77                        OPTIONAL {
78                            ?ziekte onz-g:hasQuality ?verzuim_tijd .
79                            ?verzuim_tijd
80                                a onz-pers:VerzuimTijdKwaliteit ;
81                                onz-g:hasQualityValue ?verzuim_waarde .
82                            ?verzuim_waarde
83                                onz-g:hasUnitOfMeasure onz-g:percent ;
84                                onz-g:startDatum ?start_verzuim_waarde_temp ;
85                                onz-g:hasDataValue ?verzuim_percentage .
86                            ?start_verzuim_waarde_temp ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_verzuim_waarde_temp_reken_temp
87                            OPTIONAL {
88                                ?verzuim_waarde onz-g:eindDatum ?eind_verzuim_waarde_temp .
89                                ?eind_verzuim_waarde_temp ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_verzuim_waarde_temp_reken_temp
90                            }
91                        }
92                    }
93                    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)
94                    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)
95
96                    # Gebruikt totale ziekteperiode t/m eind meetperiode als maat voor kort/langdurend verzuim
97                    BIND(IF(!BOUND(?ziekte), ?unbound, IF(!BOUND(?eind_ziekte_periode_temp) || ?eind_ziekte_periode_temp > ?eindperiode, ?eindperiode, ?eind_ziekte_periode_temp)) AS ?eind_ziekte_periode)
98                    BIND(IF(!BOUND(?ziekte), ?unbound, IF(!BOUND(?eind_ziekte_periode_temp_reken) || ?eind_ziekte_periode_temp_reken > ?eindperiode_reken, ?eindperiode_reken, ?eind_ziekte_periode_temp_reken)) AS ?eind_ziekte_periode_reken)
99                    BIND(IF(!BOUND(?ziekte), ?unbound, ?eind_ziekte_periode_reken - ?start_ziekte_periode_reken + 1) AS ?dagen_ziekte_periode)
100                    # Filter kort/langdurend verzuim
101                    #BIND(IF(?dagen_ziekte_periode <= 28 || !BOUND(?ziekte), 1, 0) AS ?voorwaarde_1)
102                    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)
103                    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)
104                    BIND(?voorwaarde_2 * ?voorwaarde_3 AS ?geldige_ziekte)
105
106                    BIND(IF(BOUND(?verzuim_tijd), ?geldige_ziekte * (100 - ?verzuim_percentage)/100 * (?eind_verzuim_waarde_reken - ?start_verzuim_waarde_reken + 1), 0) AS ?dagen_hersteld)
107                    BIND(IF(!BOUND(?ziekte), ?unbound, IF(?start_ziekte_periode_reken < ?start_afspraak_reken, ?start_afspraak_reken, ?start_ziekte_periode_reken)) AS ?start_ziekte_reken)
108                    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)
109                    BIND(IF(BOUND(?ziekte), ?geldige_ziekte * (?eind_ziekte_reken - ?start_ziekte_reken + 1), 0) AS ?dagen_verzuim)
110                }
111                GROUP BY
112                    ?overeenkomst_afspraak
113                    ?ptf
114                    ?ziekte
115                    ?dagen_afspraak
116                    ?dagen_verzuim
117            }
118            GROUP BY
119                ?overeenkomst_afspraak
120        }
121    }
122}
123