Uitwisselprofiel Kwaliteitsbeeld
Voorbeeld 6 Ziekteverzuimpercentage
Concepten
- Arbeidsovereenkomst
- Contractomvang
- Contractomvangwaarde
- Onverplaatsbaar artefact
- Verzuimtijd
- Vestiging
- Werkovereenkomst afspraak
- Ziekteperiode
- Zorgverlener (functie)
Relaties
- deel van
- gaat over
- gedefinieerd door
- heeft deel
- heeft eigenschap of kenmerk
- heeft eigenschapswaarde
- heeft meeteenheid
Eigenschappen
Instanties
SPARQL query
Code gekopieerd
...Kopieer naar klembord
1# Indicator: Kwaliteitsbeeld Voorbeeld 6: Ziekteverzuimpercentage 2# Parameters: ?jaar, ?kwartaal, 3# Ontologie: versie 3.0 of nieuwer 4 5PREFIX onz-g: <http://purl.org/ozo/onz-g#> 6PREFIX onz-org: <http://purl.org/ozo/onz-org#> 7PREFIX time: <http://www.w3.org/2006/time#> 8PREFIX onz-pers: <http://purl.org/ozo/onz-pers#> 9PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 10 11SELECT 12 ?teller 13 ?noemer 14 (IF(?noemer = 0, "Ongedefineerd", 100 * ?teller / ?noemer) AS ?indicator) 15{ 16 SELECT 17 (SUM(?netto_verzuim_totaal) AS ?teller) 18 (SUM(?netto_dagen_afspraak) AS ?noemer) 19 { 20 { 21 SELECT 22 ?overeenkomst_afspraak 23 (MAX(?dagen_afspraak * ?ptf) AS ?netto_dagen_afspraak) 24 (SUM((?dagen_verzuim - ?totaal_hersteld) * ?ptf) AS ?netto_verzuim_totaal) 25 { 26 SELECT 27 ?overeenkomst_afspraak 28 ?ptf 29 ?ziekte 30 ?dagen_afspraak 31 ?dagen_verzuim 32 (SUM(?dagen_hersteld) AS ?totaal_hersteld) 33 { 34 BIND("2024-01-01"^^xsd:date AS ?start_periode) 35 BIND("2024-12-31"^^xsd:date AS ?eind_periode) 36 37 ?eind_periode ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_periode_reken . 38 ?overeenkomst 39 a onz-pers:ArbeidsOvereenkomst ; 40 onz-g:hasPart ?overeenkomst_afspraak . 41 ?overeenkomst_afspraak 42 a onz-pers:WerkOvereenkomstAfspraak ; 43 onz-g:isAbout/a onz-pers:ZorgverlenerFunctie ; 44 onz-g:startDatum ?start_afspraak . 45 OPTIONAL { ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak } 46 FILTER (?start_afspraak <= ?eind_periode && (?eind_afspraak >= ?start_periode || !BOUND(?eind_afspraak))) 47 ?overeenkomst_afspraak onz-g:hasPart ?omvang . 48 ?omvang 49 a onz-pers:ContractOmvang ; 50 onz-g:isAbout ?omvang_waarde . 51 ?omvang_waarde 52 a onz-pers:ContractOmvangWaarde ; 53 onz-g:hasDataValue ?omvang_getal ; 54 onz-g:hasUnitOfMeasure ?omvang_eenheid . 55 ?omvang_eenheid onz-g:hasDataValue ?eenheid_factor . 56 BIND(?omvang_getal/(36/?eenheid_factor) AS ?ptf) 57 58 BIND(IF(?start_afspraak < ?start_periode, ?start_periode, ?start_afspraak) AS ?start_afspraak_corr) 59 BIND(IF(?eind_afspraak > ?eind_periode || !BOUND(?eind_afspraak), ?eind_periode, ?eind_afspraak) AS ?eind_afspraak_corr) 60 ?start_afspraak_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_afspraak_reken . 61 ?eind_afspraak_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_afspraak_reken . 62 BIND(?eind_afspraak_reken - ?start_afspraak_reken + 1 AS ?dagen_afspraak) 63 OPTIONAL { 64 VALUES ?type_verzuim # Keuze in-/exclusief zwangerschapsverlog 65 { 66 onz-pers:ZiektePeriode 67 # onz-pers:ZwangerschapsVerlof 68 } 69 ?ziekte 70 a ?type_verzuim ; 71 onz-g:definedBy ?overeenkomst ; 72 onz-g:startDatum ?start_ziekte_periode . 73 ?start_ziekte_periode ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_ziekte_periode_reken . 74 OPTIONAL { 75 ?ziekte onz-g:eindDatum ?eind_ziekte_periode_temp . 76 ?eind_ziekte_periode_temp ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_ziekte_periode_temp_reken . 77 } 78 # FILTER(?start_ziekte_periode <= ?eind_afspraak_corr && (?eind_ziekte_periode_temp >= ?start_afspraak_corr || !BOUND(?eind_ziekte_periode_temp))) 79 OPTIONAL { 80 ?ziekte onz-g:hasQuality ?verzuim_tijd . 81 ?verzuim_tijd 82 a onz-pers:VerzuimTijdKwaliteit ; 83 onz-g:hasQualityValue ?verzuim_waarde . 84 ?verzuim_waarde 85 onz-g:hasUnitOfMeasure onz-g:percent ; 86 onz-g:startDatum ?start_verzuim_waarde_temp ; 87 onz-g:hasDataValue ?verzuim_percentage . 88 ?start_verzuim_waarde_temp ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_verzuim_waarde_temp_reken_temp 89 OPTIONAL { 90 ?verzuim_waarde onz-g:eindDatum ?eind_verzuim_waarde_temp . 91 ?eind_verzuim_waarde_temp ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_verzuim_waarde_temp_reken_temp 92 } 93 } 94 } 95 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) 96 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) 97 98 # Gebruikt totale ziekteperiode t/m eind meetperiode als maat voor kort/langdurend verzuim 99 BIND(IF(!BOUND(?ziekte), ?unbound, IF(!BOUND(?eind_ziekte_periode_temp) || ?eind_ziekte_periode_temp > ?eind_periode, ?eind_periode, ?eind_ziekte_periode_temp)) AS ?eind_ziekte_periode) 100 BIND(IF(!BOUND(?ziekte), ?unbound, IF(!BOUND(?eind_ziekte_periode_temp_reken) || ?eind_ziekte_periode_temp_reken > ?eind_periode_reken, ?eind_periode_reken, ?eind_ziekte_periode_temp_reken)) AS ?eind_ziekte_periode_reken) 101 BIND(IF(!BOUND(?ziekte), ?unbound, ?eind_ziekte_periode_reken - ?start_ziekte_periode_reken + 1) AS ?dagen_ziekte_periode) 102 # Filter kort/langdurend verzuim 103 #BIND(IF(?dagen_ziekte_periode <= 28 || !BOUND(?ziekte), 1, 0) AS ?voorwaarde_1) 104 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) 105 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) 106 BIND(?voorwaarde_2 * ?voorwaarde_3 AS ?geldige_ziekte) 107 108 BIND(IF(BOUND(?verzuim_tijd), ?geldige_ziekte * (100 - ?verzuim_percentage)/100 * (?eind_verzuim_waarde_reken - ?start_verzuim_waarde_reken + 1), 0) AS ?dagen_hersteld) 109 BIND(IF(!BOUND(?ziekte), ?unbound, IF(?start_ziekte_periode_reken < ?start_afspraak_reken, ?start_afspraak_reken, ?start_ziekte_periode_reken)) AS ?start_ziekte_reken) 110 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) 111 BIND(IF(BOUND(?ziekte), ?geldige_ziekte * (?eind_ziekte_reken - ?start_ziekte_reken + 1), 0) AS ?dagen_verzuim) 112 } 113 GROUP BY 114 ?overeenkomst_afspraak 115 ?ptf 116 ?ziekte 117 ?dagen_afspraak 118 ?dagen_verzuim 119 } 120 GROUP BY 121 ?overeenkomst_afspraak 122 } 123 ?overeenkomst_afspraak onz-g:isAbout ?locatie . 124 ?locatie 125 a onz-g:StationaryArtifact ; 126 onz-g:partOf* ?vestiging_uri . 127 ?vestiging_uri a onz-org:Vestiging ; 128 . 129 } 130} 131
Heb je feedback?
Loopt u tegen een issue of vraag aan bij het KIK-V product? Neem dan contact met ons op!