Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling


Publicatiedatum:
15-07-2026

Inwerkingtreding:
16-07-2026

24.4 Overig - wat is de verhouding tussen vorderingen en opbrengsten?

Concepten

Relaties

Eigenschappen

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: Zorgkantoren 24.4
2# Parameters: ?peildatum 
3# Ontologie: versie 3.0.0 of nieuwer
4#
5PREFIX onz-fin: <http://purl.org/ozo/onz-fin#>
6PREFIX onz-g:   <http://purl.org/ozo/onz-g#>
7PREFIX xsd:     <http://www.w3.org/2001/XMLSchema#>
8
9SELECT
10  ("Verhouding vorderingen en totale opbrengsten" AS ?Kental)
11  ( 
12    IF(
13      BOUND(?bedrijfsopbrengsten) && (?bedrijfsopbrengsten != 0),
14      ROUND(xsd:decimal(?vorderingen) / xsd:decimal(?bedrijfsopbrengsten) * 100) / 100,
15      "Ongedefinieerd"
16    ) AS ?Waarde
17  )
18
19WHERE {
20  # DEEL 1: Vorderingen (balans op peildatum, uit 18.1)
21  {
22    SELECT
23      (SUM(IF(?jaarrekeningpost = "B.II Vorderingen", ?bedrag, 0)) AS ?vorderingen)
24    WHERE {
25      {
26        SELECT ?jaarrekeningpost (SUM(?bedrag_rubriek) AS ?bedrag)
27        WHERE {
28          {
29            # Middle select: totaal per rubriek (saldo + latere mutaties)
30            SELECT ?rubriek ?categorie (SUM(?geld_bedrag_post) + SUM(?saldo_waarde) / COUNT(?saldo_waarde) AS ?bedrag_rubriek)
31            WHERE {
32              {
33                # Innerste subquery: meest recente saldo per rubriek
34                SELECT ?rubriek ?categorie
35                       (IF(BOUND(?saldo_bedrag), ?saldo_bedrag, 0) AS ?saldo_waarde)
36                       ?peildatum_argument
37                       (IF(BOUND(?saldo_datum), ?saldo_datum, ?unbound) AS ?begin_datum)
38                WHERE {
39                  # BIND("2024-12-31"^^xsd:date AS ?peildatum)
40                  BIND(?peildatum AS ?peildatum_argument)
41
42                  # Selecteer rubrieken: zowel Prismant (Grootboekrubriek) als RGS (Grootboekrekening)
43                  {
44                      { ?rubriek a onz-fin:Grootboekrubriek }
45                      UNION
46                      { ?rubriek a onz-fin:Grootboekrekening }
47                  }
48                  FILTER(STRSTARTS(STR(?rubriek), STR(onz-fin:)))
49                  BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
50
51                  # Categorie-toewijzing
52                  # Prismant: 12 → B.II
53                  # RGS: BVor → B.II, BVfi → B.II
54                  BIND(
55                    COALESCE(
56                      IF(STRSTARTS(?rubriekCode, "12"), "B.II", ?unbound),
57                      IF(?rubriekCode = "BVor", "B.II", ?unbound),
58                      IF(?rubriekCode = "BVfi", "B.II", ?unbound),
59                      "other"
60                    ) AS ?categorie
61                  )
62                  FILTER(?categorie IN ("B.II"))
63
64                  # Meest recente eindsaldo per rubriek (tiebreaker binnen OPTIONAL)
65                  OPTIONAL {
66                    ?rubriek onz-g:isAbout ?saldo .
67                    ?saldo a onz-fin:EindSaldo ;
68                           onz-fin:heeftGeldBedrag ?saldo_bedrag ;
69                           onz-g:hasDate ?saldo_datum .
70                    FILTER(?saldo_datum <= ?peildatum_argument)
71                    FILTER NOT EXISTS {
72                      ?rubriek onz-g:isAbout ?otherSaldo .
73                      ?otherSaldo a onz-fin:EindSaldo ;
74                                  onz-g:hasDate ?otherDatum .
75                      FILTER(
76                        ?otherSaldo != ?saldo
77                        && ?otherDatum <= ?peildatum_argument
78                        && (
79                          ?otherDatum > ?saldo_datum
80                          || (?otherDatum = ?saldo_datum && STR(?otherSaldo) > STR(?saldo))
81                        )
82                      )
83                    }
84                  }
85                }
86              }
87
88              # Grootboekposten na saldo
89              OPTIONAL {
90                ?grootboek_post a onz-fin:Grootboekpost ;
91                      onz-g:partOf ?rubriek ;
92                      onz-g:hasDate ?datum ;
93                      onz-fin:heeftGeldBedrag ?geld_bedrag_temp .
94                # Anti-dubbeltelling
95                FILTER NOT EXISTS {
96                    ?grootboek_post onz-g:partOf ?child .
97                    ?child onz-g:partOf ?rubriek .
98                    FILTER(?child != ?rubriek)
99                    { { ?child a onz-fin:Grootboekrekening } UNION { ?child a onz-fin:Grootboekrubriek } }
100                }
101                FILTER(
102                  ?datum <= ?peildatum_argument
103                  && (!BOUND(?begin_datum) || ?datum > ?begin_datum)
104                )
105              }
106              BIND(IF(BOUND(?geld_bedrag_temp), ?geld_bedrag_temp, 0) AS ?geld_bedrag_post)
107            }
108            GROUP BY ?rubriek ?categorie
109          }
110          VALUES (?categorie ?jaarrekeningpost) {
111            ("B.II" "B.II Vorderingen")
112          }
113        }
114        GROUP BY ?jaarrekeningpost
115      }
116    }
117  }
118
119  # DEEL 2: Bedrijfsopbrengsten (W&V over meetperiode, uit 18.2)
120  {
121    SELECT ((?p_totaal) AS ?bedrijfsopbrengsten)
122    WHERE {
123      {
124        SELECT (SUM(?p_bedrag) AS ?p_totaal)
125        WHERE {
126          #BIND("2024-12-31"^^xsd:date AS ?peildatum)
127          BIND(
128            IF(
129                MONTH(?peildatum) = 12 && DAY(?peildatum) = 31,
130                xsd:date(CONCAT(STR(YEAR(?peildatum)), "-01-01")),
131                xsd:date(CONCAT(STR(YEAR(?peildatum)-1), "-07-01"))
132            )
133            AS ?startperiode)
134          BIND(?peildatum AS ?eindperiode)
135
136          # Selecteer rubrieken: zowel Prismant (Grootboekrubriek) als RGS (Grootboekrekening)
137          {
138              { ?rubriek a onz-fin:Grootboekrubriek }
139              UNION
140              { ?rubriek a onz-fin:Grootboekrekening }
141          }
142          FILTER(STRSTARTS(STR(?rubriek), STR(onz-fin:)))
143          BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
144
145          ?post a onz-fin:Grootboekpost ;
146                onz-g:partOf ?rubriek ;
147                onz-g:hasDate ?datum ;
148                onz-fin:heeftGeldBedrag ?geld_bedrag .
149          # Anti-dubbeltelling
150          FILTER NOT EXISTS {
151              ?post onz-g:partOf ?child .
152              ?child onz-g:partOf ?rubriek .
153              FILTER(?child != ?rubriek)
154              { { ?child a onz-fin:Grootboekrekening } UNION { ?child a onz-fin:Grootboekrubriek } }
155          }
156          FILTER(?datum >= ?startperiode && ?datum <= ?eindperiode)
157
158          # Categorie-toewijzing
159          # Prismant: 81, 82, 83, 89, 919, 920, 930 → P
160          # RGS: WOmz, WRev, WRvi, WRgr, WWvv, WNoa, WLbe, WBat, WWiv, WWivGpv, WOvb → P
161          BIND(
162            IF(
163                STRSTARTS(?rubriekCode, "81") ||
164                STRSTARTS(?rubriekCode, "82") ||
165                STRSTARTS(?rubriekCode, "83") ||
166                STRSTARTS(?rubriekCode, "89") ||
167                STRSTARTS(?rubriekCode, "919") ||
168                STRSTARTS(?rubriekCode, "920") ||
169                STRSTARTS(?rubriekCode, "930") ||
170                STRSTARTS(?rubriekCode, "WOmz") ||
171                STRSTARTS(?rubriekCode, "WRev") ||
172                STRSTARTS(?rubriekCode, "WRvi") ||
173                STRSTARTS(?rubriekCode, "WRgr") ||
174                STRSTARTS(?rubriekCode, "WWvv") ||
175                STRSTARTS(?rubriekCode, "WNoa") ||
176                STRSTARTS(?rubriekCode, "WLbe") ||
177                STRSTARTS(?rubriekCode, "WBat") ||
178                STRSTARTS(?rubriekCode, "WWiv") ||
179                STRSTARTS(?rubriekCode, "WWivGpv") ||
180                STRSTARTS(?rubriekCode, "WOvb"),
181                ?geld_bedrag, 0
182            ) AS ?p_bedrag
183          )
184        }
185      }
186    }
187  }
188}
189ORDER BY ?Kental
190