Let op: dit is een oudere versie van deze publicatie. Ga naar de laatste versie
Uitwisselprofiel Zorginstituut Openbaarmaking kwaliteitsindicatoren verpleeghuiszorg
2.3.2. Verzuimfrequentie
Concepten
Relaties
Eigenschappen
SPARQL query
Code gekopieerd
...Kopieer naar klembord
1# Indicator: ODB Personele samenstelling 2.3.2 2# Parameters: - 3# Ontologie: versie 2.0.0 of nieuwer 4 5PREFIX onz-g: <http://purl.org/ozo/onz-g#> 6PREFIX onz-pers: <http://purl.org/ozo/onz-pers#> 7PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 8PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 9 10# Verzuimfrequentie. Let op: datums periode op twee plekken aanpassen! 11 12SELECT 13 (COUNT(?verzuim) AS ?teller) 14 (SUM(coalesce(?factor, 0)) AS ?noemer) 15 (COUNT(?verzuim)/(SUM(coalesce(?factor, 0))) AS ?verzuimfrequentie) 16WHERE 17{ 18 { 19 # selecteer personen met verzuimperiode 20 ?persoon onz-g:isParticipantIn ?verzuim . 21 ?verzuim 22 a onz-pers:VerzuimPeriode ; 23 onz-g:startDatum ?start_verzuim . 24 25 FILTER (?start_verzuim >= ?start_periode && ?start_verzuim <= ?eind_periode) 26 { 27 SELECT DISTINCT 28 ?persoon 29 ?start_periode 30 ?eind_periode 31 WHERE 32 { 33 # definieer periode waarin overeenkomst geldig moet zijn 34 BIND("2022-01-01"^^xsd:date AS ?start_periode) 35 BIND("2022-12-31"^^xsd:date AS ?eind_periode) 36 37 # selecteer werkovereenkomsten waarbij werknemer een zorgverlenerfunctie heeft 38 ?overeenkomst 39 onz-pers:heeftOpdrachtnemer ?persoon ; 40 a onz-pers:ArbeidsOvereenkomst ; 41 onz-g:isAbout/a onz-pers:ZorgverlenerFunctie ; 42 onz-g:startDatum ?start_overeenkomst . 43 OPTIONAL {?overeenkomst onz-g:eindDatum ?eind_overeenkomst} 44 45 # alleen overeenkomsten in gevraagde periode 46 FILTER (?start_overeenkomst <= ?eind_periode && (!BOUND(?eind_overeenkomst) || ?eind_overeenkomst >= ?start_periode)) 47 48 # koppel persoon, zodat unieke instanties geteld kunnen worden 49 ?overeenkomst onz-pers:heeftOpdrachtnemer ?persoon . 50 } 51 } 52 53 } 54 UNION 55 { 56 SELECT 57 ?persoon 58 ?start_def 59 ?end_def 60 ?start_periode 61 ?eind_periode 62 WHERE 63 { 64 { 65 SELECT 66 ?persoon 67 ?overeenkomst 68 ?start_periode ?eind_periode 69 (MIN(?start_corr2) AS ?start_def) 70 (MAX(?end_corr2) AS ?end_def) 71 (MAX(?i) AS ?ignore) 72 WHERE 73 { 74 # definieer periode waarin overeenkomst geldig moet zijn 75 BIND("2022-01-01"^^xsd:date AS ?start_periode) 76 BIND("2022-12-31"^^xsd:date AS ?eind_periode) 77 78 # selecteer werkovereenkomsten waarbij werknemer een zorgverlenerfunctie heeft 79 ?overeenkomst 80 onz-pers:heeftOpdrachtnemer ?persoon ; 81 a onz-pers:ArbeidsOvereenkomst ; 82 onz-g:isAbout/a onz-pers:ZorgverlenerFunctie ; 83 onz-g:startDatum ?start . 84 OPTIONAL {?overeenkomst onz-g:eindDatum ?end} 85 86 # alleen overeenkomsten in de gevraagde periode 87 FILTER (?start <= ?eind_periode && (!BOUND(?end) || ?end >= ?start_periode)) 88 89 ?other_contract 90 onz-pers:heeftOpdrachtnemer ?persoon ; 91 a onz-pers:ArbeidsOvereenkomst ; 92 onz-g:isAbout/a onz-pers:ZorgverlenerFunctie ; 93 onz-g:startDatum ?other_start . 94 OPTIONAL {?other_contract onz-g:eindDatum ?other_end} . 95 96 # alleen overeenkomsten in de gevraagde periode 97 FILTER (?other_start <= ?eind_periode && (!BOUND(?other_end) || ?other_end >= ?start_periode)) 98 99 # corrigeer wanneer start of eind van de overeenkomst buiten de gevraagde periode valt 100 BIND(IF(?start_periode > ?start, ?start_periode, ?start) AS ?start_corr) 101 BIND(IF((?eind_periode < ?end) || !BOUND(?end), ?eind_periode, ?end) AS ?end_corr) 102 BIND(IF(?start_periode > ?other_start, ?start_periode, ?other_start) AS ?other_start_corr) 103 BIND(IF((?eind_periode < ?other_end) || !BOUND(?other_end), ?eind_periode, ?other_end) AS ?other_end_corr) 104 105 BIND(IF(?other_start_corr < ?end_corr && ?other_end_corr > ?start_corr, 1, 0) AS ?o) 106 BIND(IF(?other_start_corr < ?start_corr && ?other_end_corr > ?end_corr, 1, 0) AS ?i) 107 BIND(IF(?o = 1,IF(?other_start_corr < ?start_corr,?other_start_corr,?start_corr),?start_corr) AS ?start_corr2) 108 BIND(IF(?o = 1,IF(?other_end_corr > ?end_corr,?other_end_corr,?end_corr),?end_corr) AS ?end_corr2) 109 } 110 GROUP BY ?persoon ?overeenkomst ?start_periode ?eind_periode 111 } 112 FILTER(?ignore = 0) 113 } GROUP BY ?persoon ?start_def ?end_def ?start_periode ?eind_periode 114 } 115 BIND ((360 * (YEAR(?eind_periode + "P1D"^^xsd:duration) - YEAR(?start_periode))) + 116 (30 * (MONTH(?eind_periode + "P1D"^^xsd:duration) - MONTH(?start_periode))) + 117 (DAY(?eind_periode + "P1D"^^xsd:duration) - DAY(?start_periode)) AS ?dagen_periode) 118 BIND ((360 * (YEAR(?end_def + "P1D"^^xsd:duration) - YEAR(?start_def))) + 119 (30 * (MONTH(?end_def + "P1D"^^xsd:duration) - MONTH(?start_def))) + 120 (DAY(?end_def + "P1D"^^xsd:duration) - DAY(?start_def)) AS ?dagen_overeenkomst) 121 BIND (?dagen_overeenkomst/?dagen_periode AS ?factor) 122}
Heb je feedback?
Loopt u tegen een issue of vraag aan bij het KIK-V product? Neem dan contact met ons op!