Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling


Publicatiedatum:
18-06-2026

Inwerkingtreding:
18-06-2026

19.1 Liquiditeit - wat is de DSCR (Debt Service Coverage Ratio)?

Concepten

Relaties

Eigenschappen

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# SPARQL: 19.1 Zorgkantoren inkoopondersteuning
2# Parameters: ?startperiode, ?eindperiode, ?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    ("DSCR" AS ?Kental)
11    # Eindresultaat afronden op twee decimalen 
12    (IF(?DebtService = 0, "Ongedefinieerd"^^xsd:string, ROUND((?EBITDA / ?DebtService) * 100) / 100) AS ?Waarde)
13WHERE {
14    # ================================================================
15    # DEEL 1: EBITDA = P - Q + Q.VI 
16    # ================================================================
17    {
18        SELECT (?p_totaal - ?q_totaal + ?q_vi_totaal AS ?EBITDA)
19        WHERE {
20            SELECT
21                (SUM(?p_bedrag) AS ?p_totaal)
22                (SUM(?q_bedrag) AS ?q_totaal)
23                (SUM(?q_vi_bedrag) AS ?q_vi_totaal)
24            WHERE {
25                # Meetperiode: 1-jan t/m 31-dec of van 1-jan t/m 30-juni
26                # BIND("2024-01-01"^^xsd:date AS ?startperiode)
27                # BIND("2024-12-31"^^xsd:date AS ?eindperiode)
28
29                ?grootboek_post a onz-fin:Grootboekpost ;
30                    onz-g:partOf ?rubriek ;
31                    onz-g:hasDate ?datum ;
32                    onz-fin:heeftGeldBedrag ?geld_bedrag .
33
34                # Match directe ouder: Grootboekrekening (RGS) of Grootboekrubriek (Prismant)
35                {
36                    { ?rubriek a onz-fin:Grootboekrekening }
37                    UNION
38                    { ?rubriek a onz-fin:Grootboekrubriek }
39                }
40                # Anti-dubbeltelling: houd alleen het bladniveau (geen transitive ancestors)
41                FILTER NOT EXISTS {
42                    ?grootboek_post onz-g:partOf ?child .
43                    ?child onz-g:partOf ?rubriek .
44                    FILTER(?child != ?rubriek)
45                    { { ?child a onz-fin:Grootboekrekening } UNION { ?child a onz-fin:Grootboekrubriek } }
46                }
47                FILTER(STRSTARTS(STR(?rubriek), STR(onz-fin:)))
48                BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
49
50                FILTER(?datum >= ?startperiode && ?datum <= ?eindperiode)
51
52                # P: Som der bedrijfsopbrengsten
53                # Prismant: 81/82/83/89/919/920/930
54                # RGS: WOmz/WRev/WRvi/WRgr/WWvv/WNoa/WLbe/WBat/WWiv/WOvb
55                BIND(IF(
56                    STRSTARTS(?rubriekCode, "81") ||
57                    STRSTARTS(?rubriekCode, "82") ||
58                    STRSTARTS(?rubriekCode, "83") ||
59                    STRSTARTS(?rubriekCode, "89") ||
60                    STRSTARTS(?rubriekCode, "919") ||
61                    STRSTARTS(?rubriekCode, "920") ||
62                    STRSTARTS(?rubriekCode, "930") ||
63                    STRSTARTS(?rubriekCode, "WOmz") ||
64                    STRSTARTS(?rubriekCode, "WRev") ||
65                    STRSTARTS(?rubriekCode, "WRvi") ||
66                    STRSTARTS(?rubriekCode, "WRgr") ||
67                    STRSTARTS(?rubriekCode, "WWvv") ||
68                    STRSTARTS(?rubriekCode, "WNoa") ||
69                    STRSTARTS(?rubriekCode, "WLbe") ||
70                    STRSTARTS(?rubriekCode, "WBat") ||
71                    STRSTARTS(?rubriekCode, "WWiv") ||
72                    STRSTARTS(?rubriekCode, "WOvb"),
73                    ?geld_bedrag, 0) AS ?p_bedrag)
74
75                # Q: Som der bedrijfslasten
76                # Prismant: 417/418/411-419/420/4221/4223-4225/4229/4226/480-484/423/43-47/486/489/905/911-915/921/931
77                # RGS: WKpr/WPer/WAfs/WWvi/WBwv/WBed/WOok/WKol/WVkf/WAkf
78                BIND(IF(
79                    STRSTARTS(?rubriekCode, "417") ||
80                    STRSTARTS(?rubriekCode, "418") ||
81                    STRSTARTS(?rubriekCode, "411") ||
82                    STRSTARTS(?rubriekCode, "412") ||
83                    STRSTARTS(?rubriekCode, "413") ||
84                    STRSTARTS(?rubriekCode, "414") ||
85                    STRSTARTS(?rubriekCode, "415") ||
86                    STRSTARTS(?rubriekCode, "416") ||
87                    STRSTARTS(?rubriekCode, "419") ||
88                    STRSTARTS(?rubriekCode, "420") ||
89                    STRSTARTS(?rubriekCode, "4221") ||
90                    STRSTARTS(?rubriekCode, "4223") ||
91                    STRSTARTS(?rubriekCode, "4224") ||
92                    STRSTARTS(?rubriekCode, "4225") ||
93                    STRSTARTS(?rubriekCode, "4229") ||
94                    STRSTARTS(?rubriekCode, "4226") ||
95                    STRSTARTS(?rubriekCode, "480") ||
96                    STRSTARTS(?rubriekCode, "481") ||
97                    STRSTARTS(?rubriekCode, "482") ||
98                    STRSTARTS(?rubriekCode, "483") ||
99                    STRSTARTS(?rubriekCode, "484") ||
100                    STRSTARTS(?rubriekCode, "423") ||
101                    STRSTARTS(?rubriekCode, "43") ||
102                    STRSTARTS(?rubriekCode, "44") ||
103                    STRSTARTS(?rubriekCode, "45") ||
104                    STRSTARTS(?rubriekCode, "46") ||
105                    STRSTARTS(?rubriekCode, "47") ||
106                    STRSTARTS(?rubriekCode, "486") ||
107                    STRSTARTS(?rubriekCode, "489") ||
108                    STRSTARTS(?rubriekCode, "905") ||
109                    STRSTARTS(?rubriekCode, "911") ||
110                    STRSTARTS(?rubriekCode, "912") ||
111                    STRSTARTS(?rubriekCode, "913") ||
112                    STRSTARTS(?rubriekCode, "914") ||
113                    STRSTARTS(?rubriekCode, "915") ||
114                    STRSTARTS(?rubriekCode, "921") ||
115                    STRSTARTS(?rubriekCode, "931") ||
116                    STRSTARTS(?rubriekCode, "WKpr") ||
117                    STRSTARTS(?rubriekCode, "WPer") ||
118                    STRSTARTS(?rubriekCode, "WAfs") ||
119                    STRSTARTS(?rubriekCode, "WWvi") ||
120                    STRSTARTS(?rubriekCode, "WBwv") ||
121                    STRSTARTS(?rubriekCode, "WBed") ||
122                    STRSTARTS(?rubriekCode, "WOok") ||
123                    STRSTARTS(?rubriekCode, "WKol") ||
124                    STRSTARTS(?rubriekCode, "WVkf") ||
125                    STRSTARTS(?rubriekCode, "WAkf"),
126                    ?geld_bedrag, 0) AS ?q_bedrag)
127
128                # Q.VI: Afschrijvingen op immateriële vaste activa en materiële vaste activa
129                # Prismant: 480-484, RGS: WAfs
130                BIND(IF(
131                    STRSTARTS(?rubriekCode, "480") ||
132                    STRSTARTS(?rubriekCode, "481") ||
133                    STRSTARTS(?rubriekCode, "482") ||
134                    STRSTARTS(?rubriekCode, "483") ||
135                    STRSTARTS(?rubriekCode, "484") ||
136                    STRSTARTS(?rubriekCode, "WAfs"),
137                    ?geld_bedrag, 0) AS ?q_vi_bedrag)
138            }
139        }
140    }
141
142    # ================================================================
143    # DEEL 2: DebtService = Rente + Aflossingen
144    # ================================================================
145    {
146        SELECT (?r_iv_totaal + ?aflossing AS ?DebtService)
147        WHERE {
148
149            # R.IV Rentelasten 
150            # Prismant: 485/901, RGS: WFbe -/- WFbeRlm
151            {
152                SELECT (SUM(?r_iv_plus_bedrag) - SUM(?r_iv_min_bedrag) AS ?r_iv_totaal)
153                WHERE {
154                    # Meetperiode: 1-jan t/m 31-dec of van 1-jan t/m 30-juni
155                    # BIND("2024-01-01"^^xsd:date AS ?startperiode)
156                    # BIND("2024-12-31"^^xsd:date AS ?eindperiode)
157
158                    ?grootboek_post a onz-fin:Grootboekpost ;
159                        onz-g:partOf ?rubriek ;
160                        onz-g:hasDate ?datum ;
161                        onz-fin:heeftGeldBedrag ?geld_bedrag .
162
163                    { { ?rubriek a onz-fin:Grootboekrekening } UNION { ?rubriek a onz-fin:Grootboekrubriek } }
164                    FILTER NOT EXISTS {
165                        ?grootboek_post onz-g:partOf ?child .
166                        ?child onz-g:partOf ?rubriek .
167                        FILTER(?child != ?rubriek)
168                        { { ?child a onz-fin:Grootboekrekening } UNION { ?child a onz-fin:Grootboekrubriek } }
169                    }
170                    FILTER(STRSTARTS(STR(?rubriek), STR(onz-fin:)))
171                    BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
172
173                    FILTER(?datum >= ?startperiode && ?datum <= ?eindperiode)
174
175                    BIND(IF(STRSTARTS(?rubriekCode, "485") || STRSTARTS(?rubriekCode, "901") || STRSTARTS(?rubriekCode, "WFbe"), ?geld_bedrag, 0) AS ?r_iv_plus_bedrag)
176                    BIND(IF(STRSTARTS(?rubriekCode, "WFbeRlm"), ?geld_bedrag, 0) AS ?r_iv_min_bedrag)
177                }
178            }
179
180            # saldoVoor: F Langlopende schulden op ?peildatum 
181            # Prismant: 07, RGS: BLas
182            {
183                SELECT (SUM(?bedrag_rubriek) AS ?saldoVoor)
184                WHERE {
185                    {
186                        SELECT ?rubriek
187                            (SUM(?geld_bedrag_post) + MAX(?saldo_waarde) AS ?bedrag_rubriek)
188                        WHERE {
189                            {
190                                SELECT ?rubriek
191                                    (IF(BOUND(?saldo_bedrag), ?saldo_bedrag, 0) AS ?saldo_waarde)
192                                    ?peildatum_argument
193                                    (IF(BOUND(?saldo_datum), ?saldo_datum, ?unbound) AS ?begin_datum)
194                                WHERE {
195                                    # Peildatum: eerste dag voor het begin van de meetperiode
196                                    # BIND("2023-12-31"^^xsd:date AS ?peildatum)
197                                    BIND(?peildatum AS ?peildatum_argument)
198
199                                    {
200                                        { ?rubriek a onz-fin:Grootboekrubriek . }
201                                        UNION
202                                        { ?rubriek a onz-fin:Grootboekrekening . }
203                                        BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
204                                        FILTER(STRSTARTS(?rubriekCode, "07"))
205                                    }
206                                    UNION
207                                    {
208                                        VALUES ?rubriekCode { "BLas" }
209                                        BIND(IRI(CONCAT(STR(onz-fin:), ?rubriekCode)) AS ?rubriek)
210                                        {
211                                            { ?rubriek a onz-fin:Grootboekrubriek . }
212                                            UNION
213                                            { ?rubriek a onz-fin:Grootboekrekening . }
214                                        }
215                                    }
216
217                                    OPTIONAL {
218                                        ?rubriek onz-g:isAbout ?saldo .
219                                        ?saldo
220                                            a onz-fin:EindSaldo ;
221                                            onz-fin:heeftGeldBedrag ?saldo_bedrag ;
222                                            onz-g:hasDate ?saldo_datum .
223                                        FILTER(?saldo_datum <= ?peildatum_argument)
224                                        FILTER NOT EXISTS {
225                                            ?rubriek onz-g:isAbout ?saldo2 .
226                                            ?saldo2
227                                                a onz-fin:EindSaldo ;
228                                                onz-g:hasDate ?saldo_datum2 .
229                                            FILTER(?saldo2 != ?saldo)
230                                            FILTER(?saldo_datum2 <= ?peildatum_argument)
231                                            FILTER(
232                                                ?saldo_datum2 > ?saldo_datum
233                                                || (?saldo_datum2 = ?saldo_datum && STR(?saldo2) > STR(?saldo))
234                                            )
235                                        }
236                                    }
237                                }
238                            }
239
240                            OPTIONAL {
241                                ?grootboek_post
242                                    a onz-fin:Grootboekpost ;
243                                    onz-g:partOf ?rubriek ;
244                                    onz-g:hasDate ?datum ;
245                                    onz-fin:heeftGeldBedrag ?geld_bedrag_temp .
246                                FILTER NOT EXISTS {
247                                    ?grootboek_post onz-g:partOf ?specifiekereRubriek .
248                                    ?specifiekereRubriek onz-g:partOf+ ?rubriek .
249                                }
250                                FILTER(?datum <= ?peildatum_argument && (?datum > ?begin_datum || !BOUND(?begin_datum)))
251                            }
252                            BIND(IF(BOUND(?geld_bedrag_temp), ?geld_bedrag_temp, 0) AS ?geld_bedrag_post)
253                        } GROUP BY ?rubriek
254                    }
255                }
256            }
257
258            # saldoNa: F Langlopende schulden op ?eindperiode 
259            # Prismant: 07, RGS: BLas
260            {
261                SELECT (SUM(?bedrag_rubriek) AS ?saldoNa)
262                WHERE {
263                    {
264                        SELECT ?rubriek
265                            (SUM(?geld_bedrag_post) + MAX(?saldo_waarde) AS ?bedrag_rubriek)
266                        WHERE {
267                            {
268                                SELECT ?rubriek
269                                    (IF(BOUND(?saldo_bedrag), ?saldo_bedrag, 0) AS ?saldo_waarde)
270                                    ?peildatum_argument
271                                    (IF(BOUND(?saldo_datum), ?saldo_datum, ?unbound) AS ?begin_datum)
272                                WHERE {
273                                    # Eindperiode: laatste dag van de meetperiode
274                                    # BIND("2024-12-31"^^xsd:date AS ?eindperiode)
275                                    BIND(?eindperiode AS ?peildatum_argument)
276
277                                    {
278                                        { ?rubriek a onz-fin:Grootboekrubriek . }
279                                        UNION
280                                        { ?rubriek a onz-fin:Grootboekrekening . }
281                                        BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
282                                        FILTER(STRSTARTS(?rubriekCode, "07"))
283                                    }
284                                    UNION
285                                    {
286                                        VALUES ?rubriekCode { "BLas" }
287                                        BIND(IRI(CONCAT(STR(onz-fin:), ?rubriekCode)) AS ?rubriek)
288                                        {
289                                            { ?rubriek a onz-fin:Grootboekrubriek . }
290                                            UNION
291                                            { ?rubriek a onz-fin:Grootboekrekening . }
292                                        }
293                                    }
294
295                                    OPTIONAL {
296                                        ?rubriek onz-g:isAbout ?saldo .
297                                        ?saldo
298                                            a onz-fin:EindSaldo ;
299                                            onz-fin:heeftGeldBedrag ?saldo_bedrag ;
300                                            onz-g:hasDate ?saldo_datum .
301                                        FILTER(?saldo_datum <= ?peildatum_argument)
302                                        FILTER NOT EXISTS {
303                                            ?rubriek onz-g:isAbout ?saldo2 .
304                                            ?saldo2
305                                                a onz-fin:EindSaldo ;
306                                                onz-g:hasDate ?saldo_datum2 .
307                                            FILTER(?saldo2 != ?saldo)
308                                            FILTER(?saldo_datum2 <= ?peildatum_argument)
309                                            FILTER(
310                                                ?saldo_datum2 > ?saldo_datum
311                                                || (?saldo_datum2 = ?saldo_datum && STR(?saldo2) > STR(?saldo))
312                                            )
313                                        }
314                                    }
315                                }
316                            }
317
318                            OPTIONAL {
319                                ?grootboek_post
320                                    a onz-fin:Grootboekpost ;
321                                    onz-g:partOf ?rubriek ;
322                                    onz-g:hasDate ?datum ;
323                                    onz-fin:heeftGeldBedrag ?geld_bedrag_temp .
324                                FILTER NOT EXISTS {
325                                    ?grootboek_post onz-g:partOf ?specifiekereRubriek .
326                                    ?specifiekereRubriek onz-g:partOf+ ?rubriek .
327                                }
328                                FILTER(?datum <= ?peildatum_argument && (?datum > ?begin_datum || !BOUND(?begin_datum)))
329                            }
330                            BIND(IF(BOUND(?geld_bedrag_temp), ?geld_bedrag_temp, 0) AS ?geld_bedrag_post)
331                        } GROUP BY ?rubriek
332                    }
333                }
334            }
335
336            # Aflossing = saldoVoor - saldoNa
337            BIND(?saldoVoor - ?saldoNa AS ?aflossing)
338        }
339    }
340}
341ORDER BY ?Kental
342