Let op: dit is een oudere versie van deze publicatie. Ga naar de laatste versie
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}
Loopt u tegen een issue of vraag aan bij het KIK-V product? Neem dan contact met ons op!