Uitwisselprofiel NZa Basisinformatie kostenonderzoek

Versie:

Publicatiedatum:18-04-2024

Inwerkingtreding:18-04-2024




Bekijk bron...

1.1. Ziekteverzuimpercentage (excl. zwangerschapsverlof)

Concepten

Relaties

Eigenschappen

Instanties

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: NZA 1.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        ?overeenkomst
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            ?overeenkomst
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            ?overeenkomst
38                a onz-pers:ArbeidsOvereenkomst ;
39                onz-pers:heeftOpdrachtnemer ?persoon ;
40                onz-g:startDatum ?start_overeenkomst .
41            OPTIONAL {?overeenkomst onz-g:eindDatum ?eind_overeenkomst}
42            FILTER (?start_overeenkomst <= ?eind_periode && (?eind_overeenkomst >= ?start_periode || !BOUND(?eind_overeenkomst)))
43            BIND(IF(?start_overeenkomst < ?start_periode, ?start_periode, ?start_overeenkomst) AS ?start_overeenkomst_corr)
44            BIND(IF(?eind_overeenkomst > ?eind_periode || !BOUND(?eind_overeenkomst), ?eind_periode, ?eind_overeenkomst) AS ?eind_overeenkomst_corr)
45            ?omvang 
46                a onz-pers:ContractOmvang ;
47                onz-g:partOf ?overeenkomst ;
48                onz-g:isAbout ?omvang_waarde ;
49                onz-g:startDatum ?start_omvang .
50                OPTIONAL {?omvang onz-g:eindDatum ?eind_omvang}
51            FILTER (?start_omvang <= ?eind_overeenkomst_corr && (?eind_omvang >= ?start_overeenkomst_corr || !BOUND(?eind_omvang)))
52            ?omvang_waarde
53                onz-g:hasDataValue ?omvang_waarde_getal ;
54                onz-g:hasUnitOfMeasure ?omvang_waarde_eenheid .
55            ?omvang_waarde_eenheid
56                onz-pers:hasDenominatorQualityValue onz-g:Week ;
57                onz-pers:hasNumeratorQualityValue onz-g:Uur ;
58                onz-g:hasDataValue ?omvang_waarde_factor .
59            BIND (?omvang_waarde_getal * ?omvang_waarde_factor / 36 AS ?ptf)
60            BIND (IF(?start_omvang < ?start_overeenkomst_corr, ?start_overeenkomst_corr, ?start_omvang) AS ?start_omvang_corr)
61            BIND (IF(?eind_omvang > ?eind_overeenkomst_corr || !BOUND(?eind_omvang), ?eind_overeenkomst_corr, ?eind_omvang) AS ?eind_omvang_corr)
62            ?start_omvang_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_omvang_reken .
63            ?eind_omvang_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_omvang_reken .
64            BIND ((?eind_omvang_reken - ?start_omvang_reken + 1) * ?ptf AS ?dagen_overeenkomst)
65            OPTIONAL {
66                ?persoon
67                    onz-g:isParticipantIn ?verzuimperiode .
68                ?verzuimperiode a ?type_verzuim ;
69                    onz-g:startDatum ?start_verzuim .
70                OPTIONAL {?verzuimperiode onz-g:eindDatum ?eind_verzuim}
71                OPTIONAL {
72                    ?verzuimperiode
73                        onz-g:hasQuality ?verzuimtijd .
74                    ?verzuimtijd
75                        a onz-pers:VerzuimTijdKwaliteit ;
76                        onz-g:hasQualityValue ?verzuimtijdwaarde .
77                    ?verzuimtijdwaarde
78                        a onz-g:DurationValue ;
79                        onz-g:hasDataValue ?ziektepercentage ;
80                        onz-g:hasUnitOfMeasure onz-g:percent ;
81                        onz-g:startDatum ?start_ziektepercentage .
82                    OPTIONAL {?verzuimtijdwaarde onz-g:eindDatum ?eind_ziektepercentage}
83                }
84            }
85            BIND (IF((?start_verzuim <= ?eind_omvang_corr && (?eind_verzuim >= ?start_omvang_corr || !BOUND(?eind_verzuim))), 1, 0) AS ?geen_ziekte_factor)
86            BIND(IF(!BOUND(?verzuimperiode), 0, ?geen_ziekte_factor) AS ?ziekte_factor)
87            BIND (IF(?start_verzuim < ?start_omvang_corr && ?ziekte_factor = 1, ?start_omvang_corr, ?start_verzuim) AS ?start_verzuim_corr)
88            BIND (IF(BOUND(?verzuimperiode) && (?eind_verzuim > ?eind_omvang_corr || !BOUND(?eind_verzuim)) && ?ziekte_factor = 1, ?eind_omvang_corr, ?eind_verzuim) AS ?eind_verzuim_corr)
89            BIND (IF((?start_ziektepercentage > ?eind_verzuim_corr || ?eind_ziektepercentage < ?start_verzuim_corr), 0, 1) AS ?geen_percentage_factor)
90            BIND(IF(!BOUND(?geen_percentage_factor), 0, ?geen_percentage_factor * ?ziekte_factor) AS ?percentage_factor)
91            BIND (IF(?start_ziektepercentage < ?start_verzuim_corr, ?start_verzuim_corr, ?start_ziektepercentage) AS ?start_ziektepercentage_corr)
92            BIND (IF(?eind_ziektepercentage > ?eind_verzuim_corr || !BOUND(?eind_ziektepercentage), ?eind_verzuim_corr, ?eind_ziektepercentage) AS ?eind_ziektepercentage_corr)
93            
94            # Maak dummy verzuim en ziektepercentage datums als deze ontbreken, anders werkt de lookup naar de time:numerPosition niet
95            BIND (IF(BOUND(?start_verzuim_corr), ?start_verzuim_corr, "2023-01-01"^^xsd:date) AS ?start_verzuim_corr_bound)
96            BIND (IF(BOUND(?eind_verzuim_corr), ?eind_verzuim_corr, "2022-12-31"^^xsd:date) AS ?eind_verzuim_corr_bound)
97            BIND (IF(BOUND(?start_ziektepercentage_corr), ?start_ziektepercentage_corr, "2023-01-01"^^xsd:date) AS ?start_zp_bound)
98            BIND (IF(BOUND(?eind_ziektepercentage_corr), ?eind_ziektepercentage_corr, "2022-12-31"^^xsd:date) AS ?eind_zp_bound)
99            ?start_verzuim_corr_bound ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_verzuim_reken .
100            ?eind_verzuim_corr_bound ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_verzuim_reken .
101            ?start_zp_bound ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_zp_reken .
102            ?eind_zp_bound ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_zp_reken .
103
104            BIND ((?eind_zp_reken - ?start_zp_reken + 1) * ?ptf * ?percentage_factor * (100 - ?ziektepercentage)/100 AS ?dagen_hersteld)
105            BIND ((?eind_verzuim_reken - ?start_verzuim_reken + 1) * ?ptf * ?ziekte_factor AS ?dagen_ziek)
106            BIND (IF(!BOUND(?dagen_ziek), 0, ?dagen_ziek) AS ?dagen_ziek_reken)
107            BIND (IF(!BOUND(?dagen_hersteld), 0, ?dagen_hersteld) AS ?dagen_hersteld_reken)
108        }
109        GROUP BY ?overeenkomst ?omvang ?verzuimperiode
110    }
111    GROUP BY ?overeenkomst ?omvang
112}
113

Heb je feedback?

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