Uitwisselprofiel IGJ Contextinformatie t.b.v. aangekondigd inspectiebezoek
Over Uitwisselprofiel IGJ Contextinformatie t.b.v. aangekondigd inspectiebezoek
1.0.0-RC1-acc
- Publicatiedatum:
- 01-09-2025
- Inwerkingtreding:
- 01-09-2025
1.4.2. Wat is het aantal geplande uren aan personeel met een zorgverlener functie per dienst?
Concepten
- Arbeidsovereenkomst
- Geplande entiteit
- Geplande entiteit relatie
- Gewerkte periode
- Inhuurovereenkomst
- ODB Kwalificatiewaarde
- Planning
- Uitzendovereenkomst
- Vestiging
- Vestigingsnummer
- Werkovereenkomst afspraak
- Zorgverlener (functie)
Relaties
- deel van
- gaat over
- gedefinieerd door
- geïdentificeerd door
- heeft deel
- heeft eigenschap of kenmerk
- heeft eigenschapswaarde
- heeft gepland object
- heeft gepland subject
- heeft gepland type
- heeft geplande property
- heeft opdrachtnemer
- heeft perdurantlocatie
- specificeert geplande entiteit
Eigenschappen
SPARQL query
Code gekopieerd
...Kopieer naar klembord
1# Indicator: IGJ 1.4.2 2# Parameters: $peildatum, $vestigingsnummer 3# Ontologie: versie 3.0.0 of nieuwer 4 5PREFIX onz-g: <http://purl.org/ozo/onz-g#> 6PREFIX onz-pers:<http://purl.org/ozo/onz-pers#> 7PREFIX onz-zorg:<http://purl.org/ozo/onz-zorg#> 8PREFIX onz-org: <http://purl.org/ozo/onz-org#> 9PREFIX onz-plan:<http://purl.org/ozo/onz-plan#> 10PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 11PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 12PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 13 14SELECT 15 ?kwalificatie_niveau 16 (SUM(COALESCE(?dag * ?pil, 0.0)) AS ?Aantal_geplande_uren_ZV_PIL_dag) 17 (SUM(COALESCE(?avond * ?pil,0.0)) AS ?Aantal_geplande_uren_ZV_PIL_avond) 18 (SUM(COALESCE(?nacht * ?pil,0.0)) AS ?Aantal_geplande_uren_ZV_PIL_nacht) 19 (SUM(COALESCE(?dag * ?pnil, 0.0)) AS ?Aantal_geplande_uren_ZV_PNIL_dag) 20 (SUM(COALESCE(?avond * ?pnil,0.0)) AS ?Aantal_geplande_uren_ZV_PNIL_avond) 21 (SUM(COALESCE(?nacht * ?pnil,0.0)) AS ?Aantal_geplande_uren_ZV_PNIL_nacht) 22{ 23 { 24 SELECT DISTINCT ?kwalificatie_niveau { 25 { 26 ?functie 27 a onz-pers:ZorgverlenerFunctie ; 28 onz-g:hasQuality / onz-g:hasQualityValue ?functie_niveau . 29 ?functie_niveau a onz-pers:ODBKwalificatieWaarde ; 30 rdfs:label ?kwalificatie_niveau . 31 } UNION { 32 BIND("Totaal" AS ?kwalificatie_niveau) 33 } 34 } 35 } 36 37 OPTIONAL { 38 { 39 SELECT DISTINCT 40 ?medewerker ?kwalificatie_niveau 41 ?dag ?avond ?nacht 42 ?pil ?pnil 43 { 44 # -- Parameters (optioneel extern) 45 #BIND("2024-01-15"^^xsd:date AS ?peildatum) 46 #BIND("000001254" AS ?vestigingsnummer) 47 BIND(?peildatum AS ?peildatum_argument) 48 49 # -- Planning / shifts 50 ?planning a onz-plan:PlanInformationObject ; 51 onz-plan:specifiesPlannedEntity ?geplande_periode ; 52 onz-plan:hasPlannedStart ?start_gepland ; 53 onz-plan:hasPlannedEnd ?eind_gepland . 54 55 ?geplande_periode a onz-plan:PlannedEntity ; 56 onz-plan:hasPlannedType onz-pers:GewerktePeriode . 57 58 # Overeenkomst-koppeling 59 ?overeenkomst_assertion a onz-plan:PlannedEntityAssertion ; 60 onz-plan:hasPlannedSubject ?geplande_periode ; 61 onz-plan:hasPlannedProperty onz-g:definedBy ; 62 onz-plan:hasPlannedObject ?overeenkomst . 63 64 # Locatie-koppeling 65 ?locatie_assertion a onz-plan:PlannedEntityAssertion ; 66 onz-plan:hasPlannedSubject ?geplande_periode ; 67 onz-plan:hasPlannedProperty onz-g:hasPerdurantLocation ; 68 onz-plan:hasPlannedObject ?werk_locatie . 69 70 ?werk_locatie onz-g:partOf* ?vestiging_uri . 71 ?vestiging_uri a onz-org:Vestiging ; 72 onz-g:identifiedBy ?vestigingsnummer_object . 73 ?vestigingsnummer_object a onz-org:Vestigingsnummer ; 74 onz-g:hasDataValue ?vestigingsnummer . 75 76 VALUES ?personeels_overeenkomst { 77 onz-pers:ArbeidsOvereenkomst 78 onz-pers:UitzendOvereenkomst 79 onz-pers:InhuurOvereenkomst 80 } 81 82 ?overeenkomst a ?personeels_overeenkomst ; 83 onz-pers:heeftOpdrachtnemer ?medewerker ; 84 onz-g:hasPart ?overeenkomst_afspraak . 85 86 ?overeenkomst_afspraak a onz-pers:WerkOvereenkomstAfspraak ; 87 onz-g:startDatum ?start_afspraak ; 88 onz-g:isAbout ?functie, ?locatie . 89 OPTIONAL { ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak } 90 91 # Functie / kwalificatie 92 ?functie a onz-pers:ZorgverlenerFunctie ; 93 onz-g:hasQuality/onz-g:hasQualityValue ?kwalificatie . 94 ?kwalificatie a onz-pers:ODBKwalificatieWaarde . 95 { BIND("Totaal" AS ?kwalificatie_niveau) } 96 UNION { ?kwalificatie rdfs:label ?kwalificatie_niveau } 97 98 # -- DAN-venster: [D 07:00, D+1 07:00) == t/m 06:59 volgende dag 99 BIND(xsd:dateTime(CONCAT(STR(?peildatum_argument), "T07:00:00")) AS ?dan_start) 100 BIND(?dan_start + "P1D"^^xsd:dayTimeDuration AS ?dan_end) # exclusief 07:00 next 101 102 # Contract actief rond peildatum (ruim, kan strakker indien gewenst) 103 BIND(xsd:date(?dan_start + "P1D"^^xsd:dayTimeDuration) AS ?peildatum_plus1) 104 FILTER ( 105 (?start_afspraak <= ?peildatum_argument && (!BOUND(?eind_afspraak) || ?eind_afspraak >= ?peildatum_argument)) 106 ) 107 108 # -- Over-midnight: maak eindtijd 'aware' 109 BIND( 110 IF(?eind_gepland <= ?start_gepland, 111 ?eind_gepland + "P1D"^^xsd:dayTimeDuration, 112 ?eind_gepland) AS ?end_dt 113 ) 114 115 # -- ENIGE benodigde filter: overlap met DAN-venster 116 FILTER( (?end_dt > ?dan_start) && (?start_gepland < ?dan_end) ) 117 118 # ====== Verdeling in D / A / N binnen het DAN-venster ====== 119 120 # (1) Projecteer tijden naar '24+ uurnotatie' t.o.v. kalenderdag van peildatum 121 # 07:00 = 7.0, 14:59 = ~14.9833, 22:59 = ~22.9833, 07:00 next = 31.0 (excl) 122 BIND(HOURS(?start_gepland) + (MINUTES(?start_gepland) * 0.0166666667) AS ?start_uur_exact) 123 BIND(HOURS(?eind_gepland) + (MINUTES(?eind_gepland) * 0.0166666667) AS ?eind_uur_exact) 124 125 # Herken vormen t.o.v. peildatum: doorlopend vanaf vorige dag / vroege start volgende dag 126 BIND(xsd:date(?start_gepland) < xsd:date(?dan_start) AS ?is_prev_day) 127 BIND(xsd:date(?start_gepland) = xsd:date(?dan_start + "P1D"^^xsd:dayTimeDuration) AS ?is_next_day) 128 BIND(?is_next_day && (?start_uur_exact < 7.0) AS ?is_next_day_early) 129 130 # (2) Effectieve start/eind in 24+ notatie, daarna clampen aan [7.0, 31.0) 131 BIND( 132 IF(?is_prev_day, 7.0, 133 IF(?is_next_day_early, ?start_uur_exact + 24.0, ?start_uur_exact) 134 ) AS ?eff_start 135 ) 136 BIND( 137 IF(?is_next_day_early, 31.0, # eindigt uiterlijk bij DAN-einde 138 IF(?eind_uur_exact < ?start_uur_exact, ?eind_uur_exact + 24.0, ?eind_uur_exact) 139 ) AS ?eff_end_raw 140 ) 141 142 # Clamp strikt aan DAN-venster: [7.0, 31.0) (== t/m 06:59 volgende dag) 143 BIND(IF(?eff_start < 7.0, 7.0, ?eff_start) AS ?c_start) 144 BIND(IF(?eff_end_raw > 31.0, 31.0, ?eff_end_raw) AS ?c_end) 145 146 # Totale duur binnen DAN 147 BIND(?c_end - ?c_start AS ?dan_duur) 148 149 # (3) Dag en Avond met exacte eindminuten: dag t/m 14:59, avond t/m 22:59 150 # Dag: [7.0, 15.0) 151 BIND( 152 IF(?c_end > 7.0 && ?c_start < 15.0, 153 (IF(?c_end > 15.0, 15.0, ?c_end) - IF(?c_start < 7.0, 7.0, ?c_start)), 154 0.0) AS ?dag_raw) 155 156 # Avond: [15.0, 23.0) 157 BIND( 158 IF(?c_end > 15.0 && ?c_start < 23.0, 159 (IF(?c_end > 23.0, 23.0, ?c_end) - IF(?c_start < 15.0, 15.0, ?c_start)), 160 0.0) AS ?avond_raw) 161 162 # Nacht = rest binnen DAN 163 BIND(?dan_duur - ?dag_raw - ?avond_raw AS ?nacht_raw) 164 165 # Afronden op tienden uur (desgewenst aanpassen) 166 BIND(ROUND(?dag_raw * 10) * 0.1 AS ?dag) 167 BIND(ROUND(?avond_raw * 10) * 0.1 AS ?avond) 168 BIND(ROUND(?nacht_raw * 10) * 0.1 AS ?nacht) 169 170 # PIL / PNIL 171 BIND(IF (?personeels_overeenkomst = onz-pers:ArbeidsOvereenkomst, 1, 0) AS ?pil) 172 BIND(IF (?pil = 0, 1, 0) AS ?pnil) 173 } 174 } 175 } 176} 177GROUP BY ?kwalificatie_niveau 178ORDER BY ?kwalificatie_niveau