Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling


Publicatiedatum:
15-07-2026

Inwerkingtreding:
16-07-2026

23.2 Kapitaal - wat is de net-debt / EBITDA?

Concepten

Relaties

Eigenschappen

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: Zorgkantoren 23.2.0
2# Parameters: ?peildatum 
3# Ontologie: versie 3.0.0 of nieuwer
4# Werkt voor Prismant én RGS grootboekrubrieken
5
6PREFIX onz-fin: <http://purl.org/ozo/onz-fin#>
7PREFIX onz-g:   <http://purl.org/ozo/onz-g#>
8PREFIX xsd:     <http://www.w3.org/2001/XMLSchema#>
9
10SELECT
11  ("Net-debt/EBITDA" AS ?Kental)
12  # Eindresultaat afronden op twee decimalen
13  (IF(?ebitda = 0, "Ongedefinieerd"^^xsd:string, ROUND((xsd:decimal(?netDebt) / xsd:decimal(?ebitda)) * 100) / 100) AS ?Waarde)
14WHERE {
15  # ================================================================
16  # Net-debt = F Langlopende schulden + G Kortlopende schulden
17  # Berekend op peildatum (saldo + mutaties na saldo)
18  # ================================================================
19  {
20    SELECT
21      ( (SUM(IF(?jaarrekeningpost = "F Langlopende schulden", ?bedrag, 0))
22        + SUM(IF(?jaarrekeningpost = "G Kortlopende schulden", ?bedrag, 0))
23       ) AS ?netDebt )
24    WHERE {
25      {
26        SELECT ?jaarrekeningpost (SUM(?bedrag_rubriek) AS ?bedrag)
27        WHERE {
28          {
29            SELECT ?rubriek ?categorie 
30              (SUM(?geld_bedrag_post) + SUM(?saldo_waarde) / COUNT(?saldo_waarde) AS ?bedrag_rubriek)
31            WHERE {
32              #BIND("2024-12-31"^^xsd:date AS ?peildatum)
33              BIND(?peildatum AS ?peildatum_argument)
34
35              {
36                {
37                  ?rubriek a onz-fin:Grootboekrubriek .
38                }
39                UNION
40                {
41                  ?rubriek a onz-fin:Grootboekrekening .
42                }
43                BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
44                VALUES (?prismantPrefix ?categorie) {
45                  ("07" "F")
46                  ("14" "G")
47                  ("15" "G")
48                }
49                FILTER(STRSTARTS(?rubriekCode, ?prismantPrefix))
50              }
51              UNION
52              {
53                VALUES (?rubriekCode ?categorie) {
54                  ("BLas" "F")
55                  ("BSch" "G")
56                }
57                BIND(IRI(CONCAT(STR(onz-fin:), ?rubriekCode)) AS ?rubriek)
58                {
59                  ?rubriek a onz-fin:Grootboekrubriek .
60                }
61                UNION
62                {
63                  ?rubriek a onz-fin:Grootboekrekening .
64                }
65              }
66
67              OPTIONAL {
68                ?rubriek onz-g:isAbout ?saldo .
69                ?saldo a onz-fin:EindSaldo ;
70                       onz-fin:heeftGeldBedrag ?saldo_bedrag ;
71                       onz-g:hasDate ?saldo_datum .
72                FILTER(?saldo_datum <= ?peildatum_argument)
73                FILTER NOT EXISTS {
74                  ?rubriek onz-g:isAbout ?saldo2 .
75                  ?saldo2 a onz-fin:EindSaldo ;
76                           onz-g:hasDate ?saldo_datum2 .
77                  FILTER(?saldo2 != ?saldo)
78                  FILTER(?saldo_datum2 <= ?peildatum_argument)
79                  FILTER(
80                    ?saldo_datum2 > ?saldo_datum
81                    || (
82                      ?saldo_datum2 = ?saldo_datum
83                      && STR(?saldo2) > STR(?saldo)
84                    )
85                  )
86                }
87              }
88              BIND(IF(BOUND(?saldo_bedrag), ?saldo_bedrag, 0) AS ?saldo_waarde)
89              BIND(IF(BOUND(?saldo_datum), ?saldo_datum, ?unbound) AS ?begin_datum)
90
91              OPTIONAL {
92                ?grootboek_post a onz-fin:Grootboekpost ;
93                      onz-g:partOf ?rubriek ;
94                      onz-g:hasDate ?datum ;
95                      onz-fin:heeftGeldBedrag ?geld_bedrag_temp .
96                FILTER NOT EXISTS {
97                  ?grootboek_post onz-g:partOf ?specifiekereRubriek .
98                  ?specifiekereRubriek onz-g:partOf+ ?rubriek .
99                }
100                FILTER(?datum <= ?peildatum_argument && (?datum > ?begin_datum || !BOUND(?begin_datum)))
101              }
102              BIND(IF(BOUND(?geld_bedrag_temp), ?geld_bedrag_temp, 0) AS ?geld_bedrag_post)
103            }
104            GROUP BY ?rubriek ?categorie
105          }
106          VALUES (?categorie ?jaarrekeningpost) {
107            ("F" "F Langlopende schulden")
108            ("G" "G Kortlopende schulden")
109          }
110        }
111        GROUP BY ?jaarrekeningpost
112      }
113    }
114  }
115
116  # ================================================================
117  # EBITDA = P Som der bedrijfsopbrengsten - Q Som der bedrijfslasten
118  #        + Q.VI Afschrijvingen op immateriële vaste activa en materiële vaste activa
119  # Berekend over meetperiode (startperiode t/m eindperiode)
120  # ================================================================
121  {
122    SELECT ((?p_totaal - ?q_totaal + COALESCE(?q_vi, 0)) AS ?ebitda)
123    WHERE {
124      {
125        SELECT (SUM(?p_bedrag) AS ?p_totaal) (SUM(?q_bedrag) AS ?q_totaal)
126        WHERE {
127          #BIND("2024-12-31"^^xsd:date AS ?peildatum)
128          BIND(
129            IF(
130                MONTH(?peildatum) = 12 && DAY(?peildatum) = 31,
131                xsd:date(CONCAT(STR(YEAR(?peildatum)), "-01-01")),
132                xsd:date(CONCAT(STR(YEAR(?peildatum)-1), "-07-01"))
133            )
134            AS ?startperiode)
135          BIND(?peildatum AS ?eindperiode)
136
137          ?post a onz-fin:Grootboekpost ;
138                onz-g:partOf ?rubriek ;
139                onz-g:hasDate ?datum ;
140                onz-fin:heeftGeldBedrag ?geld_bedrag .
141
142          # Match directe ouder: Grootboekrekening (RGS) of Grootboekrubriek (Prismant)
143          {
144            { ?rubriek a onz-fin:Grootboekrekening }
145            UNION
146            { ?rubriek a onz-fin:Grootboekrubriek }
147          }
148          # Anti-dubbeltelling: houd alleen het bladniveau
149          FILTER NOT EXISTS {
150            ?post onz-g:partOf ?child .
151            ?child onz-g:partOf ?rubriek .
152            FILTER(?child != ?rubriek)
153            { { ?child a onz-fin:Grootboekrekening } UNION { ?child a onz-fin:Grootboekrubriek } }
154          }
155          FILTER(STRSTARTS(STR(?rubriek), STR(onz-fin:)))
156          BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
157
158          FILTER(?datum >= ?startperiode && ?datum <= ?eindperiode)
159
160          # --- P: Som der bedrijfsopbrengsten ---
161          # Prismant: 81/82/83/89/919/920/930
162          # RGS: WOmz/WRev/WRvi/WRgr/WWvv/WNoa/WLbe/WBat/WWiv/WOvb
163          BIND(
164            IF(
165              STRSTARTS(?rubriekCode, "81") || STRSTARTS(?rubriekCode, "82")
166              || STRSTARTS(?rubriekCode, "83") || STRSTARTS(?rubriekCode, "89")
167              || STRSTARTS(?rubriekCode, "919") || STRSTARTS(?rubriekCode, "920")
168              || STRSTARTS(?rubriekCode, "930")
169              || STRSTARTS(?rubriekCode, "WOmz") || STRSTARTS(?rubriekCode, "WRev")
170              || STRSTARTS(?rubriekCode, "WRvi") || STRSTARTS(?rubriekCode, "WRgr")
171              || STRSTARTS(?rubriekCode, "WWvv") || STRSTARTS(?rubriekCode, "WNoa")
172              || STRSTARTS(?rubriekCode, "WLbe") || STRSTARTS(?rubriekCode, "WBat")
173              || STRSTARTS(?rubriekCode, "WWiv") || STRSTARTS(?rubriekCode, "WOvb"),
174              ?geld_bedrag, 0
175            ) AS ?p_bedrag
176          )
177
178          # --- Q: Som der bedrijfslasten ---
179          # Prismant: 411-419/420/4221/4223-4225/4229/4226/480-484/423/43-47/486/489/905/911-915/921/931
180          # RGS: WKpr/WPer/WAfs/WWvi/WBwv/WBed/WOok/WKol/WVkf/WAkf
181          BIND(
182            IF(
183              STRSTARTS(?rubriekCode, "417") || STRSTARTS(?rubriekCode, "418")
184              || STRSTARTS(?rubriekCode, "411") || STRSTARTS(?rubriekCode, "412")
185              || STRSTARTS(?rubriekCode, "413") || STRSTARTS(?rubriekCode, "414")
186              || STRSTARTS(?rubriekCode, "415") || STRSTARTS(?rubriekCode, "416")
187              || STRSTARTS(?rubriekCode, "419") || STRSTARTS(?rubriekCode, "420")
188              || STRSTARTS(?rubriekCode, "4221") || STRSTARTS(?rubriekCode, "4223")
189              || STRSTARTS(?rubriekCode, "4224") || STRSTARTS(?rubriekCode, "4225")
190              || STRSTARTS(?rubriekCode, "4229") || STRSTARTS(?rubriekCode, "4226")
191              || STRSTARTS(?rubriekCode, "480") || STRSTARTS(?rubriekCode, "481")
192              || STRSTARTS(?rubriekCode, "482") || STRSTARTS(?rubriekCode, "483")
193              || STRSTARTS(?rubriekCode, "484") || STRSTARTS(?rubriekCode, "423")
194              || STRSTARTS(?rubriekCode, "43") || STRSTARTS(?rubriekCode, "44")
195              || STRSTARTS(?rubriekCode, "45") || STRSTARTS(?rubriekCode, "46")
196              || STRSTARTS(?rubriekCode, "47") || STRSTARTS(?rubriekCode, "486")
197              || STRSTARTS(?rubriekCode, "489") || STRSTARTS(?rubriekCode, "905")
198              || STRSTARTS(?rubriekCode, "911") || STRSTARTS(?rubriekCode, "912")
199              || STRSTARTS(?rubriekCode, "913") || STRSTARTS(?rubriekCode, "914")
200              || STRSTARTS(?rubriekCode, "915") || STRSTARTS(?rubriekCode, "921")
201              || STRSTARTS(?rubriekCode, "931")
202              || STRSTARTS(?rubriekCode, "WKpr") || STRSTARTS(?rubriekCode, "WPer")
203              || STRSTARTS(?rubriekCode, "WAfs") || STRSTARTS(?rubriekCode, "WWvi")
204              || STRSTARTS(?rubriekCode, "WBwv") || STRSTARTS(?rubriekCode, "WBed")
205              || STRSTARTS(?rubriekCode, "WOok") || STRSTARTS(?rubriekCode, "WKol")
206              || STRSTARTS(?rubriekCode, "WVkf") || STRSTARTS(?rubriekCode, "WAkf"),
207              ?geld_bedrag, 0
208            ) AS ?q_bedrag
209          )
210        }
211      }
212      {
213        # --- Q.VI: Afschrijvingen (wordt teruggeteld bij EBITDA) ---
214        # Prismant: 480-484
215        # RGS: WAfs
216        SELECT (SUM(?geld_bedrag) AS ?q_vi)
217        WHERE {
218          # Bereken startperiode en eindperiode op basis van peildatum
219          BIND(
220            IF(
221                MONTH(?peildatum) = 12 && DAY(?peildatum) = 31,
222                xsd:date(CONCAT(STR(YEAR(?peildatum)), "-01-01")),
223                xsd:date(CONCAT(STR(YEAR(?peildatum)-1), "-07-01"))
224            )
225            AS ?startperiode)
226          BIND(?peildatum AS ?eindperiode)
227
228          ?post a onz-fin:Grootboekpost ;
229                onz-g:partOf ?rubriek ;
230                onz-g:hasDate ?datum ;
231                onz-fin:heeftGeldBedrag ?geld_bedrag .
232
233          # Match directe ouder: Grootboekrekening (RGS) of Grootboekrubriek (Prismant)
234          {
235            { ?rubriek a onz-fin:Grootboekrekening }
236            UNION
237            { ?rubriek a onz-fin:Grootboekrubriek }
238          }
239          # Anti-dubbeltelling: houd alleen het bladniveau
240          FILTER NOT EXISTS {
241            ?post onz-g:partOf ?child .
242            ?child onz-g:partOf ?rubriek .
243            FILTER(?child != ?rubriek)
244            { { ?child a onz-fin:Grootboekrekening } UNION { ?child a onz-fin:Grootboekrubriek } }
245          }
246          FILTER(STRSTARTS(STR(?rubriek), STR(onz-fin:)))
247          BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
248
249          FILTER(
250            STRSTARTS(?rubriekCode, "480") || STRSTARTS(?rubriekCode, "481")
251            || STRSTARTS(?rubriekCode, "482") || STRSTARTS(?rubriekCode, "483")
252            || STRSTARTS(?rubriekCode, "484") || STRSTARTS(?rubriekCode, "WAfs")
253          )
254          FILTER(?datum >= ?startperiode && ?datum <= ?eindperiode)
255        }
256      }
257    }
258  }
259}
260ORDER BY ?Kental
261