Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling


Publicatiedatum:
15-07-2026

Inwerkingtreding:
16-07-2026

20.3 Solvabiliteit - wat is de debt ratio?

Concepten

Relaties

Eigenschappen

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: Zorgkantoren 20.3.0
2# Parameters: ?peildatum
3# Ontologie: versie 3.0.0 of nieuwer
4
5PREFIX onz-fin: <http://purl.org/ozo/onz-fin#>
6prefix onz-zorg:  <http://purl.org/ozo/onz-zorg#>
7PREFIX onz-g: <http://purl.org/ozo/onz-g#>
8PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
9
10SELECT 
11    ?Kental 
12    ?Waarde 
13WHERE {
14    {
15        SELECT 
16            (IF(SUM(IF(?jaarrekeningpost = "H Totaal passiva", ?bedrag, 0)) = 0,
17                "Ongedefinieerd"^^xsd:string,
18                (SUM(IF(?jaarrekeningpost = "F Langlopende schulden", ?bedrag, 0)) + 
19                SUM(IF(?jaarrekeningpost = "G Kortlopende schulden", ?bedrag, 0)))/ 
20                SUM(IF(?jaarrekeningpost = "H Totaal passiva", ?bedrag, 0))) AS ?debtratio)
21        WHERE {
22            {
23                SELECT 
24                    ?jaarrekeningpost (SUM(?bedrag_rubriek) AS ?bedrag)
25                WHERE {
26                    #BIND("2024-12-31"^^xsd:date AS ?peildatum) 
27                    BIND(?peildatum AS ?peildatum_argument)
28
29                    {
30                        SELECT  # totaal per rubriek
31                            (SUM(?geld_bedrag_post) + SUM(?saldo_waarde)/count(?saldo_waarde) AS ?bedrag_rubriek) 
32                            ?rubriek 
33                            ?jaarrekeningpost_child
34                        WHERE {
35                            {
36                                SELECT  # bereken het meest recente saldo per rubriek, 0 indien geen saldo
37                                    ?rubriek ?jaarrekeningpost_child
38                                    (IF(BOUND(?saldo_bedrag), ?saldo_bedrag, 0) AS ?saldo_waarde)
39                                    ?peildatum_argument
40                                    (IF(BOUND(?saldo_datum), ?saldo_datum, ?unbound) AS ?begin_datum)
41                                    ?saldo_datum ?saldo
42                                WHERE {
43                                    #BIND("2024-12-31"^^xsd:date AS ?peildatum) 
44									BIND(?peildatum as ?peildatum_argument)
45
46                                    {
47                                        # Prismant: prefix-mapping, want Prismant consolideert niet dus we willen onderliggende rubrieken
48                                        {
49                                        ?rubriek a onz-fin:Grootboekrubriek .
50                                        }
51                                        UNION
52                                        {
53                                        ?rubriek a onz-fin:Grootboekrekening .
54                                        # in de testdata is deze branch overbodig, voor de zekerheid laten staan omdat in werkelijkheid 
55                                        # de codes waarschijnlijk grootboekrekeningen zijn 
56                                        }
57                                        BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
58                                        FILTER(STRSTARTS(?rubriekCode, ?prismantPrefix) && REGEX(?rubriekCode, "^[0-9]{6}$"))
59
60                                        VALUES (?prismantPrefix ?jaarrekeningpost_child) {
61                                        ("0511"  "D.I")
62                                        ("05413" "D.IV")
63                                        ("05311" "D.V")
64                                        ("05342" "D.V")
65                                        ("05423" "D.V")
66                                        ("05323" "D.VI")
67                                        ("0539"  "D.VII")
68                                        ("05493" "D.VII")
69                                        ("05915" "D.VII")
70                                        ("091"   "D.VIII")
71                                        ("06"    "E")
72                                        ("07"    "F")
73                                        ("14"    "G")
74                                        ("15"    "G")
75                                        }
76                                        FILTER(STRSTARTS(?rubriekCode, ?prismantPrefix))
77                                    }
78                                    UNION
79                                    {
80                                    # RGS: exacte mapping, want RGS consolideert zelf onderliggende rubrieken
81                                    # Dit houdt in dat rubrieken naast de directe boekingen ook de totaaltelling
82                                    # van alle boekingen op alle onderliggende rubrieken bevatten (algemene uitgangspunten)BELANGRIJK  
83                                    # We willen dus niet dubbel tellen en vandaar exacte match
84                                        VALUES (?rubriekCode ?jaarrekeningpost_child) {
85                                        ("BEivGok" "D.I")
86                                        ("BEivAgi" "D.II")
87                                        ("BEivHer" "D.III")
88                                        ("BEivWer" "D.IV")
89                                        ("BEivStr" "D.IV")
90                                        ("BEivBer" "D.V")
91                                        ("BEivBef" "D.VI")
92                                        ("BEivOvr" "D.VII")
93                                        ("BEivOre" "D.VIII")
94                                        ("BVrz"    "E")
95                                        ("BEga"    "E")
96                                        ("BLas"    "F")
97                                        ("BSch"    "G")
98                                        }
99                                    
100                                        BIND(IRI(CONCAT(STR(onz-fin:), ?rubriekCode)) AS ?rubriek)
101                                            {
102                                            ?rubriek a onz-fin:Grootboekrubriek .
103                                            }
104                                            UNION
105                                            {
106                                            ?rubriek a onz-fin:Grootboekrekening .
107                                            }
108                                        }
109                            
110                                OPTIONAL {
111                                    ?rubriek onz-g:isAbout ?saldo .
112                                    ?saldo
113                                        a onz-fin:EindSaldo ;
114                                    onz-fin:heeftGeldBedrag ?saldo_bedrag ;
115                                    onz-g:hasDate ?saldo_datum .
116
117                                    FILTER (?saldo_datum <= ?peildatum_argument)
118
119                                    FILTER NOT EXISTS {  
120                                        ?rubriek onz-g:isAbout ?saldo2 .
121                                        ?saldo2
122                                            a onz-fin:EindSaldo ;
123                                        onz-g:hasDate ?saldo_datum2 .
124
125                                        FILTER(?saldo2 != ?saldo)
126                                        FILTER (?saldo_datum2 <= ?peildatum_argument)
127                                        FILTER (
128                                            ?saldo_datum2 > ?saldo_datum 
129                                            || (
130                                                ?saldo_datum2 = ?saldo_datum 
131                                                && STR(?saldo2) > STR(?saldo)
132                                            )
133                                        )
134                                    }
135                                }
136                                # Bind alleen als er een saldo in de data aanwezig was
137                                BIND(IF(BOUND(?saldo_bedrag), 1, ?unbound) AS ?heeftBeginsaldo)  
138
139                                }
140                            } # End of innermost query: Alle aanwezige beginsaldos zijn gevonden
141                        
142                                # Selecteer de bijbehorende grootboekpost bij de rubriek 
143                                OPTIONAL {  
144                                    ?grootboek_post
145                                        a onz-fin:Grootboekpost ;
146                                        onz-g:partOf ?rubriek ;
147                                        onz-g:hasDate ?datum ;
148                                        onz-fin:heeftGeldBedrag ?geld_bedrag_temp .
149
150                                    # Behoud de grootboek post alleen voor de meest specifieke rubriek, 
151                                    # om dubbeltelling bij meerdere rubrieken te voorkomen
152                                    FILTER NOT EXISTS {
153                                    ?grootboek_post onz-g:partOf ?specifiekereRubriek .
154                                    ?specifiekereRubriek onz-g:partOf+ ?rubriek .
155                                    }
156                                    
157                                    FILTER (?datum <= ?peildatum_argument && (?datum > ?begin_datum || !BOUND(?begin_datum)))
158                                    BIND (1 AS ?heeftGrootboekPost)
159                                }
160                                BIND(IF(BOUND(?geld_bedrag_temp), ?geld_bedrag_temp, 0) AS ?geld_bedrag_post)
161
162                            } GROUP BY ?rubriek ?jaarrekeningpost_child 
163                        } 
164
165                    VALUES (?jaarrekeningpost_child ?jaarrekeningpost){
166                        ("D.I"    "H Totaal passiva")
167                        ("D.IV"   "H Totaal passiva")
168                        ("D.V"    "H Totaal passiva")
169                        ("D.VI"   "H Totaal passiva")
170                        ("D.VII"  "H Totaal passiva")
171                        ("D.VIII" "H Totaal passiva")
172                        ("E"      "H Totaal passiva")
173                        ("F"      "H Totaal passiva")
174                        ("G"      "H Totaal passiva")
175                        ("F"      "F Langlopende schulden")
176                        ("G"      "G Kortlopende schulden")
177                    }
178                } GROUP BY ?jaarrekeningpost
179            }
180        }
181    }
182    
183    BIND("Debt ratio" AS ?Kental)
184    BIND(IF(?debtratio = "Ongedefinieerd"^^xsd:string,
185        "Ongedefinieerd"^^xsd:string,
186          ROUND(?debtratio *100 ) / 100) AS ?Waarde) 
187}
188ORDER BY ?Kental