Let op: dit is een oudere versie van deze publicatie. Ga naar de laatste versie

Uitwisselprofiel Zorginstituut Openbaarmaking kwaliteitsindicatoren verpleeghuiszorg

Versie:

Publicatiedatum:20-06-2023

Inwerkingtreding:01-07-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.0.0 of nieuwer
4
5PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
6PREFIX onz-pers: <http://purl.org/ozo/onz-pers#>
7PREFIX onz-g: <http://purl.org/ozo/onz-g#>
8PREFIX onz-org: <http://purl.org/ozo/onz-org#>
9PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
10
11# Let op: datums periode op twee plekken aanpassen!
12
13SELECT 
14    ((ROUND(100*SUM(?ptf * (?totaal_ziektedagen - ?correctie_totaal)))/100) AS ?teller)
15    ((ROUND(100*SUM(?ptf * ?dagen_overeenkomst))/100) AS ?noemer)
16    ((ROUND(100*SUM(?ptf * (?totaal_ziektedagen - ?correctie_totaal)) / SUM(?ptf * ?dagen_overeenkomst) * 100)/100) AS ?indicator)
17{
18    SELECT DISTINCT ?persoon ?ptf (MAX(?dagen_ziekte) AS ?totaal_ziektedagen) (SUM(?correctie_dagen_ziekte * (1 - (?aopercentage_corr / 100))) AS ?correctie_totaal) ?dagen_overeenkomst
19    {
20        SELECT DISTINCT ?persoon ?omvang ?ptf ?dagen_ziekte ?correctie_dagen_ziekte ?aopercentage_corr ?dagen_overeenkomst
21        {
22            {
23                BIND("2022-01-01"^^xsd:date AS ?start_periode)
24                BIND("2022-12-31"^^xsd:date AS ?eind_periode)
25                VALUES ?type_verzuim #Keuze in-/exclusief zwangerschapsverlog
26                { 
27                    onz-pers:ZiektePeriode
28                    # onz-pers:ZwangerschapsVerlof
29                }
30                ?overeenkomst 
31                    a onz-pers:ArbeidsOvereenkomst ;
32                    onz-g:isAbout/a onz-pers:ZorgverlenerFunctie ;
33                    onz-pers:heeftOpdrachtnemer ?persoon ;
34                    onz-g:startDatum ?start_overeenkomst .
35                OPTIONAL { ?overeenkomst onz-g:eindDatum ?eind_overeenkomst }
36                FILTER(?start_overeenkomst <= ?eind_periode && ((?eind_overeenkomst >= ?start_periode) || (!BOUND(?eind_overeenkomst))))
37                BIND(IF(?start_overeenkomst <= ?start_periode, ?start_periode, ?start_overeenkomst) AS ?start_overeenkomst_corr)
38                BIND(IF(?eind_overeenkomst >= ?eind_periode || !BOUND(?eind_overeenkomst), ?eind_periode, ?eind_overeenkomst) AS ?eind_overeenkomst_corr)
39                    
40                ?omvang
41                    a onz-pers:ContractOmvang ;
42                    onz-g:partOf ?overeenkomst ;
43                    onz-g:isAbout ?omvang_waarde ;
44                    onz-g:startDatum ?start_omvang .
45                OPTIONAL { ?omvang onz-g:eindDatum ?eind_omvang }
46                FILTER(?start_omvang <= ?eind_overeenkomst_corr && ((?eind_omvang >= ?start_overeenkomst_corr) || (!BOUND(?eind_omvang))))
47                BIND(IF(?start_omvang <= ?start_periode, ?start_periode, ?start_omvang) AS ?start_omvang_corr)
48                BIND(IF(?eind_omvang >= ?eind_periode || !BOUND(?eind_omvang), ?eind_periode, ?eind_omvang) AS ?eind_omvang_corr)
49                
50                #Bereken aantal dagen in overeenkomst
51                BIND ((360 * (YEAR(?eind_omvang_corr + "P1D"^^xsd:duration) - YEAR(?start_omvang_corr))) +
52                    (30 * (MONTH(?eind_omvang_corr + "P1D"^^xsd:duration) - MONTH(?start_omvang_corr))) +
53                    (DAY(?eind_omvang_corr + "P1D"^^xsd:duration) - DAY(?start_omvang_corr))
54                    AS ?dagen_overeenkomst)
55
56                ?omvang_waarde
57                    onz-g:hasDataValue ?omvang_waarde_getal ;
58                    onz-g:hasUnitOfMeasure ?omvang_waarde_eenheid .
59                ?omvang_waarde_eenheid
60                    onz-pers:hasDenominatorQualityValue onz-g:Week ;
61                    onz-pers:hasNumeratorQualityValue onz-g:Uur ;
62                    onz-g:hasDataValue ?omvang_waarde_factor .
63                BIND(?omvang_waarde_getal/36*?omvang_waarde_factor AS ?ptf)
64                
65                ?ziekteperiode 
66                    # a onz-pers:ZiektePeriode ;
67                    a ?type_verzuim ;
68                    onz-g:hasParticipant ?persoon ;
69                    onz-g:startDatum ?start_ziekte .
70                OPTIONAL {?ziekteperiode onz-g:eindDatum ?eind_ziekte}
71                FILTER(?start_ziekte <= ?eind_omvang_corr && ((?eind_ziekte >= ?start_omvang_corr) || (!BOUND(?eind_ziekte))))
72            
73                BIND(IF(?start_ziekte <= ?start_omvang_corr, ?start_omvang_corr, ?start_ziekte) AS ?start_ziekte_corr)
74                BIND(IF(?eind_ziekte >= ?eind_omvang_corr || !BOUND(?eind_ziekte), ?eind_omvang_corr, ?eind_ziekte) AS ?eind_ziekte_corr)
75                OPTIONAL
76                {
77                    ?ao 
78                        onz-g:inheresIn ?persoon ;
79                        a onz-pers:ArbeidsOngeschiktheid ;
80                        onz-g:hasQualityValue ?aop .
81                    ?aop
82                        onz-g:hasDataValue ?aopercentage ;
83                        onz-g:startDatum ?start_aop .
84                    OPTIONAL { ?aop onz-g:eindDatum ?eind_aop }
85                    BIND(IF(!BOUND(?eind_aop), ?eind_ziekte_corr, ?eind_aop) AS ?eind_aop_corr)
86                    FILTER(?start_aop <= ?eind_ziekte_corr && ?eind_aop_corr >= ?start_ziekte_corr)
87                }
88                BIND(IF(?start_aop <= ?start_ziekte_corr, ?start_ziekte_corr, ?start_aop) AS ?start_aop_corr)
89                BIND(IF(BOUND(?aopercentage), ?aopercentage, 100) AS ?aopercentage_corr)
90            
91                #Bereken aantal dagen ziek in periode
92                BIND ((360 * (YEAR(?eind_ziekte_corr + "P1D"^^xsd:duration) - YEAR(?start_ziekte_corr))) +
93                    (30 * (MONTH(?eind_ziekte_corr + "P1D"^^xsd:duration) - MONTH(?start_ziekte_corr))) +
94                    (DAY(?eind_ziekte_corr + "P1D"^^xsd:duration) - DAY(?start_ziekte_corr))
95                    AS ?dagen_ziekte)
96
97                #Bereken correcte aantal dagen deels hersteld o.b.v. AO percentage
98                BIND ((360 * (YEAR(?eind_aop_corr + "P1D"^^xsd:duration) - YEAR(?start_aop_corr))) +
99                    (30 * (MONTH(?eind_aop_corr + "P1D"^^xsd:duration) - MONTH(?start_aop_corr))) +
100                    (DAY(?eind_aop_corr + "P1D"^^xsd:duration) - DAY(?start_aop_corr))
101                    AS ?dagen_deelshersteld)
102
103                BIND(IF(BOUND(?dagen_deelshersteld),?dagen_deelshersteld,0) AS ?correctie_dagen_ziekte)
104                
105            } UNION {
106                BIND("2022-01-01"^^xsd:date AS ?start_periode)
107                BIND("2022-12-31"^^xsd:date AS ?eind_periode)
108                VALUES ?type_verzuim #Keuze in-/exclusief zwangerschapsverlog
109                { 
110                    onz-pers:ZiektePeriode
111                    #onz-pers:ZwangerschapsVerlof
112                }
113                ?overeenkomst 
114                    a onz-pers:ArbeidsOvereenkomst ;
115                    onz-g:isAbout/a onz-pers:ZorgverlenerFunctie ;
116                    onz-pers:heeftOpdrachtnemer ?persoon ;
117                    onz-g:startDatum ?start_overeenkomst .
118                OPTIONAL { ?overeenkomst onz-g:eindDatum ?eind_overeenkomst }
119                FILTER(?start_overeenkomst <= ?eind_periode && ((?eind_overeenkomst >= ?start_periode) || (!BOUND(?eind_overeenkomst))))
120                BIND(IF(?start_overeenkomst <= ?start_periode, ?start_periode, ?start_overeenkomst) AS ?start_overeenkomst_corr)
121                BIND(IF(?eind_overeenkomst >= ?eind_periode || !BOUND(?eind_overeenkomst), ?eind_periode, ?eind_overeenkomst) AS ?eind_overeenkomst_corr)
122
123                ?omvang
124                    a onz-pers:ContractOmvang ;
125                    onz-g:partOf ?overeenkomst ;
126                    onz-g:isAbout ?omvang_waarde ;
127                    onz-g:startDatum ?start_omvang .
128                OPTIONAL { ?omvang onz-g:eindDatum ?eind_omvang }
129                FILTER(?start_omvang <= ?eind_overeenkomst_corr && ((?eind_omvang >= ?start_overeenkomst_corr) || (!BOUND(?eind_omvang))))
130                BIND(IF(?start_omvang <= ?start_periode, ?start_periode, ?start_omvang) AS ?start_omvang_corr)
131                BIND(IF(?eind_omvang >= ?eind_periode || !BOUND(?eind_omvang), ?eind_periode, ?eind_omvang) AS ?eind_omvang_corr)
132                
133                #Bereken aantal dagen in overeenkomst
134                BIND ((360 * (YEAR(?eind_omvang_corr + "P1D"^^xsd:duration) - YEAR(?start_omvang_corr))) +
135                    (30 * (MONTH(?eind_omvang_corr + "P1D"^^xsd:duration) - MONTH(?start_omvang_corr))) +
136                    (DAY(?eind_omvang_corr + "P1D"^^xsd:duration) - DAY(?start_omvang_corr))
137                    AS ?dagen_overeenkomst)
138
139                ?omvang_waarde
140                    onz-g:hasDataValue ?omvang_waarde_getal ;
141                    onz-g:hasUnitOfMeasure ?omvang_waarde_eenheid .
142                ?omvang_waarde_eenheid
143                    onz-pers:hasDenominatorQualityValue onz-g:Week ;
144                    onz-pers:hasNumeratorQualityValue onz-g:Uur ;
145                    onz-g:hasDataValue ?omvang_waarde_factor .
146                BIND(?omvang_waarde_getal/36*?omvang_waarde_factor AS ?ptf)
147                
148                FILTER NOT EXISTS {
149                    ?ziekteperiode 
150                        a ?type_verzuim ;
151                        onz-g:hasParticipant ?persoon . 
152                }
153                BIND(0 as ?dagen_ziekte)
154                BIND(0 as ?aopercentage_corr)
155                BIND(0 as ?correctie_dagen_ziekte)
156            }
157        }
158    }
159    GROUP BY ?persoon ?ptf ?dagen_overeenkomst
160}

Heb je feedback?

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