Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling


Publicatiedatum:
03-10-2025

Inwerkingtreding:
03-10-2025

2.2 Hoeveel uur zijn er verloond?

Concepten

Relaties

Eigenschappen

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: Zorgkantoren 2.2
2# Parameters: ?jaar, ?kwartaal, ?zorgkantoor
3# Ontologie: versie 3.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 onz-fin: <http://purl.org/ozo/onz-fin#>
10
11SELECT
12	(?vestiging AS ?Organisatieindeling)
13	# ?zorgkantoor_vestiging
14	(SUM(?verloonde_uren * ?zorg) AS ?Zorggerelateerd)
15	(SUM(?verloonde_uren * ?niet_zorg) AS ?Niet_Zorggerelateerd)
16    (?Zorggerelateerd + ?Niet_Zorggerelateerd AS ?Totaal)
17
18{
19    # BIND(2023 AS ?jaar)
20    # BIND("Q3" AS ?kwartaal)
21    # BIND(onz-org:ZorgkantoorMenzis AS ?zorgkantoor)
22    BIND(IF(?kwartaal = 'Q1', xsd:date(CONCAT(STR(?jaar), '-01-01')),
23        IF(?kwartaal = 'Q2', xsd:date(CONCAT(STR(?jaar), '-04-01')),
24        IF(?kwartaal = 'Q3', xsd:date(CONCAT(STR(?jaar), '-07-01')),
25        IF(?kwartaal = 'Q4', xsd:date(CONCAT(STR(?jaar), '-10-01')),
26        '')))) AS ?start_periode)
27    BIND(?start_periode + "P3M"^^xsd:duration + "-P1D"^^xsd:duration AS ?eind_periode)
28    
29    # Bepaal filter voor definitie van overeenkomsten die geldig zijn voor personeelsleden
30    VALUES ?personeels_overeenkomst 
31    { 
32        onz-pers:ArbeidsOvereenkomst
33        onz-pers:UitzendOvereenkomst
34        onz-pers:InhuurOvereenkomst
35    }
36    ?overeenkomst 
37        a ?personeels_overeenkomst ;
38        onz-pers:heeftOpdrachtnemer ?persoon ;
39        onz-g:hasPart ?overeenkomst_afspraak .
40    ?overeenkomst_afspraak
41        a onz-pers:WerkOvereenkomstAfspraak ;
42        onz-g:startDatum ?start_afspraak .
43    OPTIONAL { ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak }
44    FILTER(?start_afspraak <= ?eind_periode && ((?eind_afspraak >= ?start_periode) || (!BOUND(?eind_afspraak))))
45
46    ?overeenkomst_afspraak onz-g:isAbout ?functie .                
47    ?functie a onz-g:OccupationalPositionRole .
48    ?overeenkomst_afspraak onz-g:isAbout ?locatie .
49    ?locatie a onz-g:StationaryArtifact .
50
51    ?verloonde_periode
52        a onz-fin:VerloondePeriode ;
53        onz-g:definedBy ?overeenkomst ;
54        onz-g:startDatum ?datum_verloonde_periode ;
55        onz-g:hasQuality/onz-g:hasQualityValue/onz-g:hasDataValue ?verloonde_uren .
56    FILTER(?datum_verloonde_periode >= ?start_periode && ?datum_verloonde_periode <= ?eind_periode)
57    FILTER(?datum_verloonde_periode >= ?start_afspraak && (?datum_verloonde_periode <= ?eind_afspraak || !BOUND(?eind_afspraak)))
58
59    ?locatie onz-g:partOf* ?vestiging_uri .
60    ?vestiging_uri a onz-org:Vestiging ;
61        onz-g:hasLocalizableArea/onz-g:identifiedBy/onz-g:hasPart/onz-g:hasPart ?postcode_6 .
62    BIND(IRI(SUBSTR(STR(?postcode_6), 1, STRLEN(STR(?postcode_6)) - 2)) AS ?postcode)
63    ?pc_gebied 
64        onz-g:identifiedBy ?postcode ;
65        onz-g:partOf+ ?zk_regio .
66    ?zk_regio a onz-org:ZorgkantoorRegio .
67    ?zorgkantoor onz-g:hasOperatingRange ?zk_regio .
68    {     
69        ?vestiging_uri onz-g:identifiedBy ?vest_nr .    	
70        ?vest_nr a onz-org:Vestigingsnummer ;
71            onz-g:hasDataValue ?vestiging .
72    } UNION {
73        # Includeer ook de organisatie als geheel en label deze als vestiging
74        ?vestiging_uri onz-org:vestigingVan ?organisatie_uri .
75        BIND("Totaal organisatie" AS ?vestiging)
76        BIND("n.v.t." AS ?zk_vestiging)
77    }
78    BIND(IF(!BOUND(?zk_vestiging), ?zorgkantoor, ?zk_vestiging) AS ?zorgkantoor_vestiging)
79    # Bepaal of de functie op de overeenkomst van het type ZorgverlenerFunctie is
80    BIND(IF(EXISTS{?functie a onz-pers:ZorgverlenerFunctie}, 1, 0) AS ?zorg)
81    BIND(IF(?zorg = 0, 1, 0) AS ?niet_zorg)
82
83}
84GROUP BY ?vestiging ?zorgkantoor_vestiging
85ORDER BY ?vestiging